{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "77f8abe4",
   "metadata": {},
   "outputs": [],
   "source": [
    "datasets = ['CUB', 'Derm7pt', 'RIVAL10']\n",
    "use_dataset = datasets[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9c76d794",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "\n",
    "notebook_dir = os.getcwd()\n",
    "project_root_path = os.path.dirname(notebook_dir)\n",
    "sys.path.insert(0, project_root_path)\n",
    "\n",
    "from src.config import PROJECT_ROOT, CUB_CONFIG, DERM7PT_CONFIG, RIVAL10_CONFIG  # noqa: E402\n",
    "import numpy as np  # noqa: E402"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b513b979",
   "metadata": {},
   "outputs": [],
   "source": [
    "DATASET_PATH =  os.path.join(PROJECT_ROOT, 'output', use_dataset)\n",
    "if use_dataset == 'CUB':\n",
    "    config_dict = CUB_CONFIG\n",
    "elif use_dataset == 'Derm7pt':\n",
    "    config_dict = DERM7PT_CONFIG\n",
    "else:\n",
    "    config_dict = RIVAL10_CONFIG"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "800abaa0",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_concepts = config_dict['N_TRIMMED_CONCEPTS']\n",
    "num_classes = config_dict['N_CLASSES']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c65785d9",
   "metadata": {},
   "source": [
    "# Load and Transform Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d6466d21",
   "metadata": {},
   "outputs": [],
   "source": [
    "prototypes = np.load(os.path.join(DATASET_PATH, 'learned_prototypes.npy'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c26897a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,\n",
       "        0., 1.],\n",
       "       [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0.,\n",
       "        0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 0., 1., 0., 0., 0., 0.,\n",
       "        0., 1.],\n",
       "       [1., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0.,\n",
       "        0., 1.],\n",
       "       [1., 0., 0., 0., 0., 1., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0.,\n",
       "        0., 0.],\n",
       "       [1., 0., 0., 0., 0., 0., 1., 0., 1., 1., 0., 1., 0., 0., 0., 0.,\n",
       "        0., 1.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,\n",
       "        0., 1.],\n",
       "       [0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 1.,\n",
       "        1., 1.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1.,\n",
       "        1., 0.],\n",
       "       [0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 0., 1.,\n",
       "        1., 0.]], dtype=float32)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prototypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "14241831",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAAK9CAYAAAADlCV3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAASIRJREFUeJzt3QeYVNX9P/6zgoCCYu+xFzRgL7FiixoSu2JBI6IkdoMlSoxRY8Eau0TFrrHE2JOIJdbYyxfBgqDG3gtYQWH+z+f8nt3/LnVXl53j7uv1PBd27rTP3HvnznvOPfdMTaVSqSQAACjQTNUuAAAApkZYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWIVWoqamJh177LHVLoM2KLa72P6q4fLLL8/P/b///a8qzw/MeMIqFKr2Q7j+NN9886WNNtoo/fvf/06tyYYbbtjgdc4111xpjTXWSJdeemmaOHFisz3PCy+8kIPVDwk2f/vb39JZZ52Vfkz+9a9/5eW60EILfe/l+dVXX+Vld//996dqOOmkk9Itt9ySSrL44ovn5brppptO8fqLL764bpt+6qmnWrw+aC2EVSjcn//853TVVVelK6+8Mv3+979PH374YerVq1e64447Gtzu66+/Tn/84x/Tj9UiiyySX2dMRx99dPruu+/SXnvtlf7whz80a1g97rjj2lxYveaaa3Kwevfdd9N//vOf7x1WY9lNKazGdhfbXzXC6u67756fe7HFFkvV0KlTp3Tfffel9957b4rLPa4HfhhhFQr3i1/8Iu222275Q/mwww5LDz30UJp55pnTtdde2+B28aHYvn37Fq2tUqk0W0jp2rVrfp0xDRgwIP33v//NAfa8885L33777RTvE62E33zzTbM8f2v15ZdfpltvvTUdcsghaZVVVskBqrnFdletUNauXbv83NXqhrDuuuumLl26pOuvv77B/Lfeeiu/V3/5y19WpS5oTYRV+JGZY4450iyzzDJZMJ20z2ptP8LRo0envn375vtFINxzzz1zK1l9l112Wdp4441zN4OOHTumFVZYIQ0ePHiy547WuV/96ldp6NChafXVV891XHjhhalnz55ppZVWmmK9yy23XNp8882b/DpnnXXW9LOf/SyHrWhNrn2NBxxwQA5cP/3pT3Otd955Z77u2WefzcF+9tlnz+Fhk002SY899liDbhU77rhj/ju6UtQenq3fUnjBBRfUPW4cMt9///3TZ5991qC7wj//+c/0+uuv190/lskXX3yROnfunA4++ODJXkeElghUgwYNqqsj7vfggw+m3/72t2nuuefONf/6179On3766WT3jy4f66+/fn782WabLYef559/vtHL8eabb85fKOK177zzzummm26aYsCPebHNLLvssjn8Lbjggmm77bZLr7zySm6JnnfeefPtonW19rXXbm+T9lnt3r17XsZT+nKx8MILpx122KFu3umnn57WWWedvBxie1pttdXSjTfe2OB+8dixHVxxxRV1zx3bdP3lOWlr+fTWZe36jFqjxT3qjW0u6jv11FMbvXxjWcVyihb3+uLL5JxzzjnFbf+5557L9S+55JL5/gsssEDq169f+vjjjxvcrna5vvTSS6l37955O4nlFNuZL2m0JcIqFG7MmDHpo48+yoEtQsq+++6bw1G0QDZGfMh9/vnnOSzF3/HhHoGjvgimcRg1DrmfccYZ6Sc/+Unab7/90vnnnz/Z440cOTLtsssu6ec//3k6++yz08orr5xbfeMDeMSIEQ1u++STT6aXX3650bVO6tVXX81BL4J2rTiMHS2vO+20U37+CIuxXCLQDRs2LHeViG4Er732Wg4jjz/+eL7fBhtskA466KD8d7zO2i4Hyy+/fF0wiEATwSaWwfbbb5+D+GabbVbXsnvUUUfl1zvPPPPU3T+6BEQ43nbbbXPr2oQJEyYLLdEC3adPnwbzI3S/+OKL+XkjqEYA32abbfJta8XjRziNxz/llFPy64pgtd566zW6K0M8bgSxCEQRVmNbuP322xvcJmqOLyGxXURYjNcfgSi2vVinEVRrv7zE66x97RHSpiTWTYTxSQ+NP/zww+mdd97JddSKdRgtvtHdJQ71x5ewCNbxpaD+cojQGeu49rkj6E9NY9ZlrfiCsMUWW+QvW3Hbbt26pSOOOKJJ/cJ33XXX9MQTT+RgXyvCa4TyOAoyqbvvvjtv2/HF8dxzz83L47rrrsvde+qv/1rxvo1wGu/huM0555yTfvOb3zS6PvjRqwBFuuyyy+JTa7KpY8eOlcsvv3yy28d1xxxzTN3l+Dvm9evXr8Httt1228rcc8/dYN5XX3012eNtvvnmlSWXXLLBvMUWWyw/5p133tlg/meffVbp1KlT5Ygjjmgw/6CDDqp07ty58sUXX0zztfbs2bPSrVu3yocffpinF198Md83nmvLLbds8BpnmmmmyvPPP9/g/ttss02lQ4cOlVdeeaVu3jvvvFOZbbbZKhtssEHdvL///e/5Me67774G9//ggw/y/TfbbLPKhAkT6uafd955+faXXnpp3bxf/vKXeTlMaujQofm2//73vxvMX3HFFfPrm3S9rrbaapXx48fXzT/11FPz/FtvvTVf/vzzzytzzDFHpX///g0e77333qt07dp1svlT8v7771fat29fufjii+vmrbPOOpWtt966we3i9cVz/+Uvf5nsMSZOnJj/j/Uy6TY26bZWa+TIkfnyueee2+B2++23X6VLly4NtrdJt71YJt27d69svPHGDebHdrTHHntM9ty1y/O1115r8rqM9RLzrrzyyrp548aNqyywwAKV7bffvjI9sR3E9vDdd9/l+xx//PF5/gsvvJAf94EHHqir78knn5zqaw7XXnttvt2DDz442XLdaqutJluOMX/YsGHTrRFaAy2rULho3YyWmJiuvvrq3Eq2995758O5jbHPPvs0uBytU3G4cezYsXXz4vDrpC25cWg/Wn/icn1LLLHEZIc2o3vB1ltvXdeKWNtaFy2N0VoYh7CnJw51RgteTNHaGS1O0aoYIwLUF3VFN4Va8Tx33XVXfp44rForDmNHi1e05tV/rVNyzz33pPHjx6ff/e53aaaZ/v/dYv/+/fOh1/qtfFMTZ4RHS179PqHRKhktzlNqWY6WsfqtbtFiHq2KceZ+iPUdh62jFTvWR+0ULc1rrbVWPqlneqK1Ll5PtCzWiseLVsP6XQ7+8Y9/5NbiAw88cLLH+D59QaMrQbRA1+/HGespDu9vueWWDba3+n9HTbG9xTb6zDPPpO+jqesyWq3rr58OHTqkNddcM2/7jRXrJFo/a/uRxzYQRyfidUxJ/dccLaaxXqPLS5jS645W4vpq11PttgKtnbAKhYsPzghCMcWh5PiwjbAWh5HjQ3l6Fl100QaXox9dqB9W4mSmePwIlXHIPQJj7Vn4UwqrUxKHst944418UkltaHj//fdzF4HGiMP5EdDifhEw4xByjHgQIWpazx/dI6IPbvSNnVSE3ugn+eabb07zuaMPapj0MSK4RACuvX5aIhjF+okz1mv7BNeeDV7bV7a+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FEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABSr6LD65ptvpn79+k3zNuPGjUtjx45tMI0fP77FagQAoI2G1U8++SRdccUV07zNoEGDUteuXRtMQ4YMabEaAQCYcdqnKrrtttumef2rr7463ccYOHBgOuSQQxrMGz169A+uDQCANh5Wt9lmm1RTU5MqlcpUbxPXT0vHjh3zVF+HDh2arUYAANpoN4AFF1ww3XTTTWnixIlTnJ555plqlgcAQFsOq6uttlp6+umnp3r99FpdAQBo3araDeDwww9PX3755VSvX3rppdN9993XojUBAFCOqobV9ddff5rXd+7cOfXs2bPF6gEAoCxFD10FAEDbJqwCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsWoqlUoltTIjRoyodgkAAExD9+7dU2O0T218AbREcC6hllLqKKmWUuooqZaoo0ePHtUuIw0fPryIOmprKWXdlFBHSbWUsr0G20m5taij3PdOY9tLdQMAAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsaoeVr/++uv08MMPpxdeeGGy67755pt05ZVXTvP+48aNS2PHjm0wjR8/fgZWDABAmwirL7/8clp++eXTBhtskHr06JF69uyZ3n333brrx4wZk/bcc89pPsagQYNS165dG0xDhgxpgeoBAGjVYfWII45I3bt3Tx988EEaOXJkmm222dK6666b3njjjUY/xsCBA3OorT/tvffeM7RuAABaRvtURY888ki655570jzzzJOn22+/Pe23335p/fXXT/fdd1/q3LnzdB+jY8eOeaqvQ4cOM7BqAADaRMtq9Fdt3/7/z8s1NTVp8ODBacstt8xdAqKbAAAAbVdVW1a7deuWnnrqqdxvtb7zzjsv/7/VVltVqTIAAFJbb1nddttt07XXXjvF6yKw7rLLLqlSqbR4XQAAlKGqYTVOjvrXv/411esvuOCCNHHixBatCQCAclR9nFUAAJgaYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKVVOpVCqplRkxYkS1SwAAYBq6d++eGqXSCg0fPjwCeBFT1FKCUuooqRbbSbnLpJTlEUqppZQ6SqqllO21pG22lDpKqkUd5b53Gks3AAAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBita92AS+++GJ67LHH0tprr526deuWXnrppXT22WencePGpd122y1tvPHG07x/3C6m+saPHz+DqwYAoNW3rN55551p5ZVXTocddlhaZZVV8uUNNtggjR49Or3++utps802S//5z3+m+RiDBg1KXbt2bTANGTKkxV4DAACtNKz++c9/Tocffnj6+OOP02WXXZZ23XXX1L9//3T33Xene++9N1938sknT/MxBg4cmMaMGdNg2nvvvVvsNQAA0ErD6vPPP5/69u2b/+7du3f6/PPP0w477FB3fZ8+fdJzzz03zcfo2LFjmn322RtMHTp0mOG1AwDQBk6wqqmp+X+FzDRT6tSpUz6MX2u22WbLLaUAALRNVQ2riy++eBo1alTd5UcffTQtuuiidZffeOONtOCCC1apOgAA2vRoAPvuu2+aMGFC3eXu3bs3uP7f//73dEcDAACg9apqWN1nn32mef1JJ53UYrUAAFCeqvdZBQCAqRFWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFg1lUqlklqZESNGVLsEAACmoXv37qkx2qdWqkePHqkEw4cPb/TKmNEBvoQ6SqqllDpqaylhm43ttZQ6Slo3JdRSSh0l1VLK+6akbbaUdVNSLeoou5bG0A0AAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAEDbCKtfffVVcz4cAABtXJPD6iabbJLefvvtyeY/8cQTaeWVV26uugAAoOlhtVOnTmnFFVdM119/fb48ceLEdOyxx6b11lsv9erVa0bUCABAG9XkX7D65z//mc4///zUr1+/dOutt6b//e9/6fXXX0933HFH2myzzWZMlQAAtEnf6+dW999///TWW2+lU045JbVv3z7df//9aZ111mn+6gAAaNOa3A3g008/Tdtvv30aPHhwuvDCC1Pv3r1zi+oFF1wwYyoEAKDNanLLavfu3dMSSyyRnn322fx///79c//V/fbbL3cRiAkAAKrSsrrPPvukBx98MAfVWjvttFMaNmxYGj9+fLMUBQAA3yusHn300Wmmmf7f3b755pu6+Yssski6++67LVUAAKoXVmOoquOPPz4tvPDCqUuXLunVV1+tC7GXXHJJ81UGAECb1+SwesIJJ6TLL788nXrqqalDhw4N+rIOGTKkuesDAKANa3JYvfLKK9NFF12U+vTpk9q1a1c3f6WVVkovvfRSc9cHAEAb1uSwGj+1uvTSS0+xe8C3337bXHUBAEDTw+oKK6yQHnroocnm33jjjWmVVVZprroAAKDp46z+6U9/SnvssUduYY3W1JtuuimNHDkydw+In1wFAICqtaxuvfXW6fbbb0/33HNP6ty5cw6vL774Yp7385//vNkKAwCAJreshvXXX9+YqgAAlNeyCgAARbWszjnnnKmmpqZRD/jJJ5/80JoAAKDxYfWss86q+/vjjz/OPwyw+eabp7XXXjvPe/TRR9PQoUPzr1gBAECLhtU4+7/W9ttvn/785z+nAw44oG7eQQcdlM4777x80tWAAQN+UEGVSqXRrbgAALRuTe6zGi2oW2yxxWTzY16E1R+qY8eOeXQBAABo8mgAc889d7r11lvToYce2mB+zIvrGuuQQw6Z4vwJEyakk08+ue6x/vKXv0zzccaNG5en+saPH9/oOgAAaEVh9bjjjkt77713uv/++9Naa62V5z3++OPpzjvvTBdffHGjHyf6wa600kppjjnmmKwbQLSsxhiujekOMGjQoFxTffvuu2+j6wAAoBWF1b59+6bll18+nXPOOfnXq0Jcfvjhh+vCa2OcdNJJ6aKLLkpnnHFG2njjjevmzzzzzOnyyy/PP+vaGAMHDpyslXb06NFp8ODBja4FAIBW9KMAEUqvueaaH/TERx55ZNpkk03SbrvtlrbccsvcQhpB9fv0cY2pvg4dOvyg2gAA+BGH1YkTJ+bWyw8++CD/Xd8GG2zQ6MdZY4010tNPP53233//tPrqq+cAbCQAAAC+d1h97LHH0q677ppef/313L+0vgiacYJUU3Tp0iVdccUV6brrrkubbrppk+8PAEDr1eSwus8+++RW0H/+859pwQUXbLaW0J133jmtt956uaV1scUWa5bHBACgjYXVUaNGpRtvvDEtvfTSzV7MIosskicAAPhePwoQJ1dFf1UAACiuZfXAAw/MPwjw3nvvpR49ekx2Bv+KK67YnPUBANCGNTmsbr/99vn/fv361c2LfqtxstX3OcEKAACaLay+9tprTb0LAAC0TFh1pj4AAMWF1dtuu61Rt9tqq61+SD0AAND0sLrNNttM9zb6rAIAUJWwOunPqgIAQHHjrAIAQEsRVgEAKJawCgBAsYRVAACKJawCANC6wupnn32WhgwZkgYOHJg++eSTPO+ZZ55Jb7/9dnPXBwBAG9bkX7B67rnn0qabbpq6du2a/ve//6X+/funueaaK910003pjTfeSFdeeeWMqRQAgDanyS2rhxxySOrbt28aNWpU6tSpU938Xr16pQcffLC56wMAoA1rclh98skn029/+9vJ5i+88MLpvffea666AACg6WG1Y8eOaezYsZPNf/nll9O8887bXHUBAEDTw+pWW22V/vznP6dvv/02X66pqcl9VY844oi0/fbbz4gaAQBoo5ocVs8444z0xRdfpPnmmy99/fXXqWfPnmnppZdOs802WzrxxBNnTJUAALRJTR4NIEYBuPvuu9PDDz+cRwaI4LrqqqvmEQIAAKCqYbXWeuutlycAACjqRwHuvffe9Ktf/SottdRSeYq/77nnnuavDgCANq3JYfWCCy5IW2yxRe6jevDBB+dp9tlnz+Osnn/++TOmSgAA2qSaSqVSacodFllkkXTkkUemAw44oMH8CKonnXRSET+5OmLEiGqXAADANHTv3j01SqWJOnfuXBk1atRk819++eV8XQmGDx8eAbyIKWopQSl1lFRLKXWUVEsp751Slkdpy6TaNZS2fiyTyZVSR0m1qKPc905jfa9xVm+++ebJ5t9666257yoAAFRtNIAVVlghj6d6//33p7XXXjvPe+yxx9J///vfdOihh6Zzzjmn7rYHHXRQsxUKAEDb0+Sweskll6Q555wzvfDCC3mqNcccc+TrasUvWwmrAAC0aFh97bXXftATAgBAYzW5z+p9993X1LsAAEDLhNUYYzV+COCEE05Ib7755vd7VgAAmBFhNcZRjTFWb7zxxrTkkkumzTffPN1www1p/PjxTX0oAABo3rA6zzzzpAEDBqT/+7//S48//nhadtll03777ZcWWmihfELVsGHDmvqQAADQPGG1vlVXXTUNHDgwt7R+8cUX6dJLL02rrbZaWn/99dPzzz//Qx4aAAC+X1j99ttvczeAXr16pcUWWywNHTo0nXfeeen9999Po0ePzvN23HHH5q8WAIA2pclDVx144IHp2muvjd/ISrvvvns69dRTG/y2a+fOndPpp5+euwUAAECLhtX4IYBzzz03bbfddqljx45T7ddqiCsAAFq8G8AxxxyTD/FPGlS/++679OCDD+a/27dvn3r27PmDiwMAoG1rcljdaKON0ieffDLZ/DFjxuTrAACgamE1+qrW1NRMNv/jjz/O/VUBAKDF+6xGH9UQQbVv374NugFMmDAhPffcc2mdddZptsIAAKDRYbVr1651LauzzTZbmmWWWequ69ChQ/rZz36W+vfvP2OqBACgTWp0WL3sssvy/4svvng67LDDHPIHAKC8oatiNIDw4YcfppEjR+a/l1tuuTTvvPM2f3UAALRpTT7B6quvvkr9+vVLCy64YNpggw3yFD8AsNdee+XrAACgamF1wIAB6YEHHki33357+uyzz/J066235nmHHnposxUGAABN7gbwj3/8I914441pww03rJvXq1evfMJV79690+DBg5u7RgAA2qjv1Q1g/vnnn2z+fPPNpxsAAADVDatrr712Psnqm2++qZv39ddfp+OOOy5fBwAAVesGcNZZZ6UtttgiLbLIImmllVbK84YNG5Y6deqUhg4d2myFAQBAk8Nqjx490qhRo9I111yTXnrppTxvl112SX369GnwQwEAANDiYfXBBx/MP6s66a9Vfffdd/m6GMoKAACq0md1o402Sp988slk88eMGZOvAwCAqrWsViqVVFNTM9n8jz/++Af/BOuXX36ZbrjhhjR69Oj8owPRvWDuueee5n3GjRuXp/rGjx//g+oAAOBHFla32267/H8E1b59+6aOHTvWXTdhwoT03HPP5e4BTbHCCiukhx9+OM0111zpzTffzF0IPv3007TsssumV155JR1//PHpscceS0ssscRUH2PQoEF5JIL69t133ybVAQDAj7wbQNeuXfMULauzzTZb3eWYFlhggfSb3/wmXX311U168jhBK/q6hoEDB+afbX399dfTE088kf9fccUV01FHHTXNx4j7RReE+tPee+/dpDoAAPiRt6xedtll+f/FF188HXbYYT/4kP+kHn300fTXv/41h9/QpUuX3GK68847T/N+0cJbv5U3dOjQoVlrAwDgR9JnNX4QIHz44Ydp5MiR+e/lllsuzTvvvN+rgNr+r/EjA9FPtb6FF144Pw8AAG3T9/q51X79+uVgGX1MY4rD93vttdf3+rnVTTbZJK266qpp7NixdeG3VnQFmN4JVgAAtF5NblkdMGBAeuCBB9Ltt9+e1l133TwvTpI66KCD0qGHHpoGDx7c5FbaWnHov754jvXXX7+pJQIA0FbD6j/+8Y904403pg033LBuXq9evfKvV/Xu3fsHhdVJnXbaaU0tDwCAtt4NYP75559s/nzzzfe9ugEAAECzhdW11147t4jGCVG1vv7663zmflwHAABV6wZw1llnpS222CItssgiaaWVVsrzhg0bljp16pSGDh3abIUBAECTw2qPHj3SqFGj0jXXXJMH9Q/xs6h9+vTJ/VYBAKAqYfXbb79N3bp1S3fccUfq379/sxUBAAA/uM/qzDPP3KCvKgAAFHWC1f77759OOeWU9N13382YigAA4Pv2WX3yySfTvffem+66667cf7Vz584Nrr/pppua+pAAANA8YXWOOeZI22+/fVPvBgAAMz6sXnbZZU1/FgAAmJF9VidOnJj7qq677rppjTXWSEceeWT+MQAAAKh6WD3xxBPTH/7wh9SlS5e08MILp7PPPjufbAUAAFUPq1deeWW64IIL8q9U3XLLLen222/PPwwQLa4AAFDVsPrGG2+kXr161V3edNNNU01NTXrnnXdmSGEAANDosBrjqnbq1GmyHwmIX7UCAICqjgZQqVRS3759U8eOHevmxa9Z7bPPPg3GWjXOKgAALR5W99hjj8nm7bbbbs1WCAAAfO+wanxVAACK7bMKAAAtTVgFAKBYwioAAMUSVgEAKJawCgBAsWoqMYBqKzNixIhqlwAAwDR07949NevQVa11AbREcC6hllLqKKmWUuooqRZ1lFtLKXWUVEspdZRUSyl11NbSo0ePapeRhg8fXsQysW4m19j2Ut0AAAAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUKyqhtVnnnkmvfbaa3WXr7rqqrTuuuumn/zkJ2m99dZL11133XQfY9y4cWns2LENpvHjx8/gygEAaPVhdc8990yvvPJK/nvIkCHpt7/9bVp99dXTUUcdldZYY43Uv3//dOmll07zMQYNGpS6du3aYIrHAgDgx699NZ981KhRaZlllsl/X3DBBenss8/OAbVWBNYTTzwx9evXb6qPMXDgwHTIIYc0mDd69OgZWDUAAG0irM4666zpo48+Sosttlh6++2305prrtng+rXWWqtBN4Ep6dixY57q69ChwwypFwCANtQN4Be/+EUaPHhw/rtnz57pxhtvbHD9DTfckJZeeukqVQcAQJtuWT3llFPyCVURVKOv6hlnnJHuv//+tPzyy6eRI0emxx57LN18883VLBEAgLbasrrQQgulZ599Nq299trpzjvvTJVKJT3xxBPprrvuSossskj673//m3r16lXNEgEAaKstq2GOOeZIJ598cp4AAKA+PwoAAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAoVk2lUqmkVmbEiBHVLgEAgGno3r17apRKKzR8+PBKSbXEYq72VEodJdVS2nZSAnWUW0spdZRUSyl1BPu1yZVSS0nrpto1pMJqaSzdAAAAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFCsqobVAw88MD300EM/6DHGjRuXxo4d22AaP358s9UIAEAbDavnn39+2nDDDdOyyy6bTjnllPTee+81+TEGDRqUunbt2mAaMmTIDKkXAIA21g3grrvuSr169Uqnn356WnTRRdPWW2+d7rjjjjRx4sRG3X/gwIFpzJgxDaa99957htcNAEAbCKs9evRIZ511VnrnnXfS1VdfnQ/rb7PNNuknP/lJOuqoo9Lo0aOnef+OHTum2WefvcHUoUOHFqsfAIBWHFZrzTzzzKl3797pzjvvTK+++mrq379/uuaaa9Jyyy1X7dIAAGjrYbW+6A5w7LHHptdeey2HVwAA2qaqhtXFFlsstWvXbqrX19TUpJ///OctWhMAAOVoX80nj5ZTAAD4UXUDAACAIKwCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsWoqlUoltTIjRoyodgkAAExD9+7dU6NUWqHhw4dXSlFKLaXUUVItpdRRUi3qKLeWUuooqZZS6qitJT5Sqz2VUkdJtagjTbGWHxPdAAAAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKVfWwet5556Vf//rX6brrrsuXr7rqqrTCCiukbt26pT/84Q/pu+++m+b9x40bl8aOHdtgGj9+fAtVDwBAqw2rJ5xwQg6kX331VRowYEA65ZRT8v99+vRJe+yxRxoyZEg6/vjjp/kYgwYNSl27dm0wxf0AAPjxa1/NJ7/88svztN1226Vhw4al1VZbLV1xxRU5rIZoXf3973+fjjvuuKk+xsCBA9MhhxzSYN7o0aNneO0AALTysPrOO++k1VdfPf+90korpZlmmimtvPLKddevuuqq+TbT0rFjxzzV16FDhxlUMQAAbaYbwAILLJBeeOGF/PeoUaPShAkT6i6H559/Ps0333xVrBAAgDbbshqH++Pkqq233jrde++9+ZD/YYcdlj7++ONUU1OTTjzxxLTDDjtUs0QAANpqWI2+qLPMMkt69NFHU//+/dORRx6ZuwNEaI2TrrbccsvpnmAFAEDrVdWwGn1UYzSA+nbeeec8AQBA1cdZBQCAqRFWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFg1lUqlklqZESNGVLsEAACmoXv37qlRKq3Q8OHDK6UopZaoI1Z3CVMptZSybkIptaij3FpKqaOkWkqpI5S0X6t2DaXtY0tZJqXUkQpaN42lGwAAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsdpX88nffffdNHjw4PTwww/nv2eaaaa05JJLpm222Sb17ds3tWvXrprlAQDQVltWn3rqqbT88sunf/3rX+nbb79No0aNSquttlrq3LlzOuyww9IGG2yQPv/88+k+zrhx49LYsWMbTOPHj2+R1wAAQCsNq7/73e/SgAEDcmh96KGH0uWXX55efvnldN1116VXX301ffXVV+mPf/zjdB9n0KBBqWvXrg2mIUOGtMhrAACglYbVZ555Ju2+++51l3fdddc87/33309zzjlnOvXUU9ONN9443ccZOHBgGjNmTINp7733nsHVAwDQqvuszjfffLmfavRRDRFSv/vuuzT77LPny8sss0z65JNPpvs4HTt2zFN9HTp0mEFVAwDQJlpW4ySqffbZJ915553pvvvuS3369Ek9e/ZMs8wyS75+5MiRaeGFF65WeQAAtOWW1RNOOCG3rG655ZZpwoQJae21105XX3113fU1NTW5PyoAAG1X1cJqly5d0vXXX5+++eabfPg/Lte32WabVas0AAAKUdVxVkOnTp2qXQIAAIXyC1YAABRLWAUAoFjCKgAAxRJWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAMUSVgEAKJawCgBAsYRVAACKJawCAFAsYRUAgGIJqwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIByVZiib775pnLMMcfk/9VRTh0l1VJKHSXVUkodJdVSSh0l1aKOcmsppY6SaimljpJqaek6auKfagfmEo0dOzZ17do1jRkzJs0+++zqKKSOkmoppY6SaimljpJqKaWOkmpRR7m1lFJHSbWUUkdJtbR0HboBAABQLGEVAIBiCasAABRLWJ2Kjh07pmOOOSb/r45y6iipllLqKKmWUuooqZZS6iipFnWUW0spdZRUSyl1lFRLS9fhBCsAAIqlZRUAgGIJqwAAFEtYBQCgWMIqAADFElan4Pzzz0+LL7546tSpU1prrbXSE0880eI1PPjgg2nLLbdMCy20UKqpqUm33HJLqoZBgwalNdZYI80222xpvvnmS9tss00aOXJkVWoZPHhwWnHFFfOvZcS09tprp3//+9+p2k4++eS8jn73u9+16PMee+yx+XnrT926dUvV8vbbb6fddtstzT333GmWWWZJPXr0SE899VSL1hDv20mXSUz7779/amkTJkxIRx99dFpiiSXy8lhqqaXS8ccfHz9x3eK1fP7553n7XGyxxXIt66yzTnryyServh+LZfGnP/0pLbjggrmuTTfdNI0aNarF67jpppvSZpttlrfduP7//u//mr2GxtTy7bffpiOOOCK/dzp37pxv8+tf/zq98847LVpH7f4l9idRx5xzzpnXzeOPP97iddS3zz775NucddZZzV5HY2rp27fvZPuWLbbYosXrCC+++GLaaqut8q9IxTqKz+k33ngjtXQtU9rfxnTaaac1ax3C6iSuv/76dMghh+QhGZ555pm00korpc033zx98MEHLVrHl19+mZ87gnM1PfDAA/mD/rHHHkt333133pnGTj3qa2mLLLJIDoZPP/10DkEbb7xx2nrrrdPzzz+fqiU+8C+88MIcoqvhpz/9aXr33XfrpocffrgqdXz66adp3XXXTTPPPHP+AvHCCy+kM844I3/ItfT6qL88YpsNO+64Y2ppp5xySv6Cdd555+UPlrh86qmnpnPPPbfFa9l7773zsrjqqqvS8OHD83s4wkd8wajmfiyWxznnnJP++te/5iAUH7qxv/3mm29atI64fr311svraEabVi1fffVV/tyJLznxf4ToaByIUNKSdYRll102b7uxvcR+Jb4Ixnbz4YcftmgdtW6++eb8ORShaUZpTC0RTuvvY6699toWr+OVV17J22t8mbj//vvTc889l7eZaGBr6VrqL4uYLr300hxWt99+++YtJIau4v+35pprVvbff/+6yxMmTKgstNBClUGDBlWtplhNN998c6UEH3zwQa7ngQceqJRgzjnnrAwZMqQqz/35559Xlllmmcrdd99d6dmzZ+Xggw9u0ec/5phjKiuttFKlBEcccURlvfXWq5Qm1slSSy1VmThxYos/9y9/+ctKv379GszbbrvtKn369GnROr766qtKu3btKnfccUeD+auuumrlqKOOqtp+LNbJAgssUDnttNPq5n322WeVjh07Vq699toWq6O+1157LV//7LPPzrDnb2wttZ544ol8u9dff72qdYwZMybf7p577mnxOt56663KwgsvXBkxYkRlscUWq5x55pkzrIZp1bLHHntUtt566xn+3NOrY6eddqrstttuLVrH1GqZVCyfjTfeuNmfW8tqPePHj8+tdtHiUGummWbKlx999NGq1laKMWPG5P/nmmuuqtYRh1ivu+66/K0vugNUQ7Q4//KXv2ywvbS0OGQaLQ1LLrlk6tOnzww5DNQYt912W1p99dVzC2Z0F1lllVXSxRdfnKr9fr766qtTv3798jf9lhaH2u+999708ssv58vDhg3LLVS/+MUvWrSO7777Lr9fJm11icPu1WqJD6+99lp67733Grx/4pBmdL2yv224z43td4455qjqe+miiy7K6yda2VrSxIkT0+67754OP/zwfCSp2qIlM/Zxyy23XNp3333Txx9/3OLL45///Gdu+Y6jEFFLvGeq1VWwvvfffz/XttdeezX7Ywur9Xz00Ud5pz7//PM3mB+XY6fa1sWbJPq9xeHe7t27V6WGOCTVpUuX/KsZ0X8pDg2tsMIKLV5HBOU4TBd9eqsldlCXX355uvPOO/Ph5vjwX3/99XP/xJb26quv5hqWWWaZNHTo0LwTP+igg9IVV1yRqiV23p999lnuZ1YNRx55ZNp5553zobroHhEBPt4/8aWiJUV/8/hCF/1lo+9j7OMixEcgjMN21VK7T7W/nbroDhF9WHfZZZfcT7+l3XHHHXl/G190zjzzzNyVZJ555mnRGqJrRvv27fP+pNqiC8CVV16Zv4RGXdFNLr58xnuqpXzwwQfpiy++yF3iop677rorbbvttmm77bbL9VRT7O9jfxO1NLf2zf6ItFrRkjhixIiqtsbEt9k4+SFaG2688ca0xx575DdoSwbWN998Mx188MF5xz0j+gg1Vv0WuugzG+E1TqC54YYbZsg32+l9kYmW1ZNOOilfjmAW20r0RYx1VA2XXHJJXkYzso/btMR6uOaaa9Lf/va33CIU222E1ainpZdJ9FWNFuaFF144tWvXLq266qo5AMWRJMoU5wf07t07n4QWXwSrYaONNsrbbTTkxJGSqCf6FkdrXkuI7fPss8/ODQPVODoyqfjyWStOgov9bpw4Ga2tm2yySYvta0OcrzFgwID898orr5weeeSRvL/t2bNnqpborxpfxmfE56KW1XriG2PsyKMpu764vMACC6S27IADDsjfsu+77758olO1dOjQIS299NJptdVWy62acUgqdmYtKXag8e02PvDjG39MEZjjRJH4uyW/ZdcXhwnj0NDo0aNb/LnjbO5JvzAsv/zyVeuW8Prrr6d77rknn1hULXHYsrZ1NT7Y4lBmfLhUozU+PlBjG40WmfiyFSOcRBiK7iPVUrtPtb+delCN7Ti+FFejVTXECW+xv/3Zz36Wv/zF/i3+bykPPfRQ3tcuuuiidfvaWCaHHnpoPuGr2uL9E7mhJfe588wzT14OJe1va9dVnAw4o/a5wuokQShCUDTx1/8WE5er1S+y2uJbfQTVONz+n//8Jw/DU5JYP+PGjWvR54xv0NEdIVocaqdoVYxvlPF3fOGphggicZZoBMeWFl1DJh3SLPpqRktvNVx22WW59Sf6FFdLnNkdfd7ri22jtmWkWuEjto8YvSG6a0TrTLXEviRCaf397dixY3PLXVvd39YPqtEfPb5wxXBabXV/G1/w4kz3+vvaODIRXwRj+622t956K/dZbcl9bocOHfIwVSXtb0N8iYn8NKP6NOsGMIkYtioO0UX4WHPNNfN4bnESz5577tniwaP+t7Xojxhv1DixKb5ltuSh/ziMeeutt+a+KLV9yaKjfZyg0ZIGDhyYD+vG649+mVFXHH5p6Z1WLIdJ++xGCIgPlZbsy3vYYYfl8e9iBxV9EWO4tQhDcXi3pUWLYZxQFN0A4oM2Wu7ihIyYqvGBGmE13sfRAlEtsW5OPPHEvL1GN4Bnn302/eUvf8mH41tavEfii2d0o4n9SnzYR1/aGb1fm95+LLpFnHDCCbmvc4TXGH4nwkiM59ySdXzyySe5Vap2PNPaIBBhurlbeadVS4SeHXbYIR/2jiNZcZSmdp8b10dQaYk6Yl8W224MmRU1RTeAGLoohjpr7mHgprduJg3r0f871klsy81tWrXEdNxxx+UhmeL5o2Hg97//fW55jhOdWnKZHH744WmnnXZKG2ywQe6qEect3H777fnzsBpZJL5k/v3vf8/DFc4wzT6+QCtw7rnnVhZddNFKhw4d8lBWjz32WIvXcN999+VhIiadYuiMljSlGmK67LLLKi0thgGKYUtivcw777yVTTbZpHLXXXdVSlCNoati+JIFF1wwL48Y1iUujx49ulItt99+e6V79+556KFu3bpVLrrooqrUMXTo0LyNjhw5slJNY8eOzdtE7Es6depUWXLJJfNQUePGjWvxWq6//vr8/LGtxHBRMTxfDBNV7f1YDF919NFHV+aff/683cR7ekast+nVEfuzKV0fw8O1ZC21Q2dNaYr7tVQdX3/9dWXbbbfNwzbGNhP7ma222ioPo1Xtz7oZOXTVtGqJIeA222yz/Nkz88wz5zr69+9fee+991q0jlqXXHJJZemll877lhjC8JZbbqnMCI2p5cILL6zMMsssM3SfUhP/zLgoDAAA358+qwAAFEtYBQCgWMIqAADFElYBACiWsAoAQLGEVQAAiiWsAgBQLGEVAIBiCasATNX//ve/VFNTk39iEaAahFWgTYjfWD/wwAPTkksumTp27Jh+8pOfpC233DLde++96cdmww03TL/73e+a7XYAJWtf7QIAWqJ1cN11101zzDFHOu2001KPHj3St99+m4YOHZr233//9NJLL1W7RACmQssq0Ortt99++VD2E088kbbffvu07LLLpp/+9KfpkEMOSY899ljd7d5444209dZbpy5duqTZZ5899e7dO73//vt11x977LFp5ZVXTldddVVafPHFU9euXdPOO++cPv/887rbTJw4MZ166qlp6aWXzi24iy66aDrxxBPrrn/zzTfz40ZwnmuuufLzRZiu1bdv37TNNtuk4447Ls0777y5jn322SeNHz++7voHHnggnX322fk1xVT//tMSNZ900kmpX79+abbZZsu1XXTRRQ1uE8tolVVWSZ06dUqrr756evbZZyd7nBEjRqRf/OIXeTnNP//8affdd08fffRRvu7+++9PHTp0SA899FDd7WN5zDfffA2WJUBjCatAq/bJJ5+kO++8M7egdu7cebLrIzTWhswIjnH7CIN33313evXVV9NOO+3U4PavvPJKuuWWW9Idd9yRp7jtySefXHf9wIED8+Wjjz46vfDCC+lvf/tbDnQhWnM333zzHBQjzP33v//NgW+LLbaoC6Mhuia8+OKLOfhde+216aabbsrhNURIXXvttVP//v3Tu+++m6fo0tBYZ5xxRl0IjRC/7777ppEjR+brvvjii/SrX/0qrbDCCunpp5/O4fywww5rcP/PPvssbbzxxjnQPvXUU3nZRgiNAF6/60EE2DFjxuTniWUxZMiQuuUA0CQVgFbs8ccfr8Su7qabbprm7e66665Ku3btKm+88UbdvOeffz7f94knnsiXjznmmMqss85aGTt2bN1tDj/88Mpaa62V/475HTt2rFx88cVTfI6rrrqqstxyy1UmTpxYN2/cuHGVWWaZpTJ06NB8eY899qjMNddclS+//LLuNoMHD6506dKlMmHChHy5Z8+elYMPPni6r33S2y222GKV3Xbbre5y1DHffPPlxw8XXnhhZe655658/fXXDZ47lsGzzz6bLx9//PGVzTbbrMHzvPnmm/k2I0eOrHtNK6+8cqV3796VFVZYodK/f//p1gowNVpWgVatUokcNX3RkhktlPVbKaOFMVpe47r6h9KjZbTWggsumD744IO6xxg3blzaZJNNpvgcw4YNS6NHj873jxbVmKIrwDfffJNbbGuttNJKadZZZ627HC2p0eoZXQh+qBVXXLHu7+hCsMACCzSoP66PLgD1n3vS13DffffV1R9Tt27d8nW1ryG6AVxzzTXpH//4R35tZ5555g+uG2i7nGAFtGrLLLNMDmXNdRLVzDPP3OByPHZ0IQizzDLLNO8bgXO11VbLQW5S0T+1JUyr/saI1xCjKJxyyimTXRfBvdYjjzyS/49uFTFNqQsGQGNoWQVatWi5jH6i559/fvryyy8nuz76YIbll18+t1zWb72MPqdxfbSwNjYYR2Cd2nBYq666aho1alQ+2ShOwKo/xcla9Vsvv/7667rLcRJYtGDWtvpGy+WECRNSc4tl8Nxzz+XW0PrPPelreP7553ML86SvoTaQRgvrgAED0sUXX5zWWmuttMceezQpEAPUJ6wCrV4E1Qh3a665Zj40HYExDnmfc845dYe5N9100zykVZ8+fdIzzzyTz4r/9a9/nXr27JlPSGqMOHx+xBFHpN///vfpyiuvzKEtwt4ll1ySr4/HnmeeefKJXHGC1WuvvZZPojrooIPSW2+9Vfc4cbLVXnvtlcPyv/71r3TMMcekAw44IM000//bZUdQfPzxx/MoAHEWfnMFwV133TW3tMbJW7XPffrppze4TZyoFi2lu+yyS3ryySfza4whwPbcc8+8jGPabbfd8heEmHfZZZflABwndgF8H8Iq0OrFDwFEAN1oo43SoYcemrp3755+/vOf5xbQwYMH59tESLv11lvTnHPOmTbYYIMcXuN+119/fZOeK858j+f405/+lFsqYzSB2j6h0Q/1wQcfzENGbbfddvn6CKXRkhlDVNWKPq/RSht1xP232mqrfGZ+rThDv127drnFN7oPxJBbzSFab2+//fY0fPjwfLb/UUcdNdnh/oUWWiiPYhChdLPNNssBP87+j769EaZjmK7XX389XXjhhXVdA2J4rD/+8Y+5xRigqWriLKsm3wuAGSLGUY2uBzE8FgBaVgEAKJiwCgBAsXQDAACgWFpWAQAolrAKAECxhFUAAIolrAIAUCxhFQCAYgmrAAAUS1gFAKBYwioAAKlU/x/+fEZoDD0GiQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.figure(figsize=(8,8))\n",
    "sns.heatmap(prototypes, cmap='Greys', cbar=False, linewidths=0.5, linecolor='lightgray')\n",
    "plt.xlabel(\"Concept Index\")\n",
    "plt.ylabel(\"Prototype Index\")\n",
    "plt.title(\"Binary Prototype Activation Map\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3664502f",
   "metadata": {},
   "source": [
    "# Spectral Co-Clustering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f2540112",
   "metadata": {},
   "outputs": [],
   "source": [
    "row_sums = prototypes.sum(axis=1)\n",
    "col_sums = prototypes.sum(axis=0)\n",
    "\n",
    "prototypes[row_sums == 0, :] = 1e-10\n",
    "prototypes[:, col_sums == 0] = 1e-10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3f469103",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqYAAALBCAYAAACKimN9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAATpxJREFUeJzt3Qe4XFXZB/oVEpJQQk/o0nsoUg0dCV2K8BGFAIEgSkKRpsCnQiJFwAa2SBMFEUE6+kEEFJAOoQWkhS5Ih1CTQLLv865759w5JeWEnDMrnN/veXZyzp45M+/svWfmP2utvaZbVVVVAgCABpuj0QUAAEAQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEExhNjJixIjUrVu3NDv7/e9/nx/D888/3+hSoOHH5C233JLvO/4HBFNmQ2PHjk3/8z//k5ZZZpnUu3fvtOSSS6Ztttkm/fKXv2x0aemjjz7K4bGUN5moY/fdd0+LLbZY6tmzZ+rXr1/aeeed05VXXjnL72vy5MnpggsuSFtuuWVaaKGFUq9evdKyyy6bDjjggHT//fenzvJ///d/eR90pv333z+Hi9oy33zzpbXXXjv99Kc/TRMnTpxl9/PKK6/kx/bQQw/NVtvns3r88cfzdo3n+7vvvjvTt3Pqqaemq6++OjXCb37zmxyASxLP1diuK620UpuX33jjjU3H9OWXX97p9dE1CabMVu688860/vrrp4cffjgddNBB6Ve/+lX6xje+keaYY4501llnFRFMR44cWUQwPfHEE9NWW22VHn300fStb30r/fa3v03f+c530gcffJD22GOP9Kc//WmW3dfHH3+cvvKVr6ShQ4emqqrS//7v/6ZRo0al/fbbL911111pww03TP/5z39SZ4jgFfugs0UQv+iii/ISASjC+THHHJOGDBkyS4NpPLbPGkwbsX0+iz/+8Y/5w1X4LAFpasF03333zcdwfNjt7GC6+eab5/uO/xshwv64cePSvffe2+qyiy++OF8OnalHp94bfEannHJKmn/++dN9992XFlhggWaXvf7662l28+GHH6Z55plnlt9uvHn/8Ic/zC3LEUDnnHPOpssinI4ePTp98skns+z+4jZvuOGG9POf/zwdccQRrQJyrJ+dRdieMGFCmmuuuaZ6nR49eqR99tmn6ffhw4enjTbaKF166aXpZz/7WVpiiSVm6na7uthGcQzvvffe6bnnnsthKT6Mzkrdu3fPSyPEh+pGhr8VVlghffrpp+mSSy7JHyBr4ri86qqr0k477ZSuuOKKhtVHF1TBbGSVVVapttxyyxm6bhzehxxySPXHP/6xWnnllatevXpV6667bnXrrbe2uu5//vOf6oADDqj69etX9ezZs1p99dWr888/v9X1Pv744+rEE0+sVlpppXx7iy22WPXVr361GjduXPXcc8/l+2y5xPXDkCFDqnnmmSdfd4cddqjmnXfeatddd82X3XbbbdX//M//VEsvvXS+/6WWWqo64ogjqo8++qjZ/cdtzcjTdtVVV60WWmih6r333puhbfXaa69VQ4cOzY8/Htdaa61V/f73v5+hv33ppZeqHj16VNtss80MXf+CCy7IjyG2V039dqq3zDLL5O1WM2nSpGrEiBHViiuumOuMx7jJJptUf//73/Plcd229kHN5MmTq5///Od5/8bfx+P95je/Wb399tut7nennXaqbrjhhmq99dbL142/m5ravm3pmGOOyfd/xx13TPd2n3nmmXwMLLjggtVcc81VbbTRRtVf//rXptv65z//2eZji+1Zc9lll+VjvHfv3tXCCy9cDR48OB/b9XW2dRtTpkzJte2yyy5tHvPzzTdf3k71dfz5z3+ujj/++GrRRRet5p577mrnnXeuXnzxxVZ/f/fdd1fbbbddvo14XJtvvnl1++23VzPqX//6V76/e++9t7r00kurOeaYIx9zLcW+PfPMM6v+/fvn7brIIovk+73vvvvy5W097tqx1fKYjH203HLLtVnPl770pbzvan73u99VW221VdW3b9/83F1ttdWq3/zmN83+JrZty/veYostmm3P+L/e9PZl/XEX6+O1JH6Ox3300UdXn3766XS3bdSwxhpr5OfU4osvnrdh/f3H8zq2edT3l7/8pemy559/vho2bFh+XY364nkYx279c7p+u8Zrbhw/cb0+ffpU++67b6vnHNRoMWW2El1t0TUc3dP9+/ef7vVvvfXW3GJ1+OGH567W6E7bfvvtc7dV7e9fe+219KUvfSmPozr00ENT37590/XXX58OPPDA9N577zW1AMYYyuiuvvnmm9PXv/719O1vfzu9//77eRxW1DNw4MDcfT1s2LD01a9+NY/tDGuttVZT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BFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCA0NpqNGjUprrbVWmm+++fIyYMCAdP311zeyJAAAumIwXWqppdJpp52WxowZk+6///705S9/Oe26667psccea2RZAAA0QI/UQDvvvHOz30855ZTcinr33XenNdZYo2F1AQDQxYJpvcmTJ6e//OUv6cMPP8xd+gAAdC0ND6Zjx47NQXTChAlp3nnnTVdddVVaffXVG10WAABdLZiussoq6aGHHkrjx49Pl19+eRoyZEi69dZb2wynEydOzEu9SZMmdWK1AAB0lG5VVVWpIAMHDkwrrLBCOvvss1tdNmLEiDRy5Mhm64YNG5aGDx/eiRUCANAe/fv3n7ErVoXZaqutqiFDhrR52YQJE6rx48c3W8aMGRPBuohl7NixxdRRglLqCPZNa7ZJa7ZJa6XUoo5yaymljpJqKaWO0mqZEQ3tyj/++OPTDjvskL7whS+k999/P/3pT39Kt9xySxo9enSb1+/Vq1de6vXs2bOTqgUAoCM1NJi+/vrrab/99kv//e9/0/zzz58n249Qus022zSyLAAAulowPf/88xt59wAAFKSh3/wEAAA1gikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKEIxwfS0005L3bp1S0cccUSjSwEAoKsG0/vuuy+dffbZaa211mp0KQAAdNVg+sEHH6TBgwenc889Ny244IKNLgcAgK4aTA855JC00047pYEDBza6FAAAGqhHI+/8z3/+c3rggQdyV/6MmDhxYl7qTZo0qYOqAwCgM3WrqqpKDfDSSy+l9ddfP914441NY0u33HLLtM4666Qzzzyzzb8ZMWJEGjlyZLN1w4YNS8OHD++UmgEAaL/+/fvP2BWrBrnqqqsiEFfdu3dvWuL3bt265Z8//fTTVn8zYcKEavz48c2WMWPG5L8rYRk7dmwxdZSglDqCfdNaKbWUsm9K2j+l1FFSLeoot5ZS6iipllLqKK2WGdGwrvytt946jR07ttm6Aw44IK266qrp2GOPTd27d2/1N7169cpLvZ49e3Z4rQAAdLyGBdM+ffq0atadZ5550sILLzzjzb0AAHxuNPysfAAAaPhZ+S3dcsstjS4BAIAG0WIKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIrQ0GA6YsSI1K1bt2bLqquu2siSAABokB6pwdZYY4100003Nf3eo0fDSwIAoAEangIjiC622GKNLgMAgK4+xvTpp59OSyyxRFp++eXT4MGD04svvtjokgAA6GrBdKONNkq///3v0w033JBGjRqVnnvuubTZZpul999/v5FlAQDQ1bryd9hhh6af11prrRxUl1lmmXTZZZelAw88sNX1J06cmJd6kyZN6pRaAQDoWN2qqqpSQTbYYIM0cODA9KMf/ajNs/hHjhzZbN2wYcPS8OHDO7FCAADao3///jN2xaog77//frXgggtWZ511VpuXT5gwoRo/fnyzZcyYMRGsi1jGjh3b8BpKq6MUJW2TRtdQ2v4ppY5Qyv4pbZuUQB3l1lJKHSXVUkodpdUyIxralX/MMceknXfeOXffv/LKK+nEE09M3bt3T3vttVeb1+/Vq1de6vXs2bOTqgUAoCM1NJj+5z//ySH0rbfeSn379k2bbrppuvvuu/PPAAB0LQ0Npn/+858befcAABSk4fOYAgBAEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBGKCKa//vWv07LLLpt69+6dNtpoo3Tvvfc2uiQAALpaML300kvTUUcdlU488cT0wAMPpLXXXjttt9126fXXX290aQAAdKVg+rOf/SwddNBB6YADDkirr756+u1vf5vmnnvu9Lvf/a7RpQEA0FWC6aRJk9KYMWPSwIED//+C5pgj/37XXXc1sjQAADpZj9RAb775Zpo8eXJadNFFm62P35944olW1584cWJeWoZbAABmf92qqqoadeevvPJKWnLJJdOdd96ZBgwY0LT+u9/9brr11lvTPffc0+z6I0aMSCNHjmy2btiwYWn48OGdVjMAAO3Tv3//8ltMF1lkkdS9e/f02muvNVsfvy+22GKtrn/88cfnE6XqjRs3boYfbEd79NFHi6hFHeXWUkodJdVSSh21WtZcc81Gl5HGjh1b1DYpoZaS6ijhGKkdJyXU4ngtt47Sail+jGnPnj3Teuutl26++eamdVOmTMm/17eg1vTq1SvNN998zZa4DQAAZn8NbTEN0QI6ZMiQtP7666cNN9wwnXnmmenDDz/MZ+kDANB1NDyYfu1rX0tvvPFGOuGEE9Krr76a1llnnXTDDTe0OiEKAIDPt4YH03DooYfmBQCArqvhE+wDAEAQTAEA+PwF048++mhW3hwAAF1Iu4Pp1ltvnV5++eVW6++999584hIAAHRKMO3du3daa6210qWXXto072h8I9Omm26adtxxx5kqAgAA2n1W/t/+9rf061//Og0dOjRdc8016fnnn08vvPBC+utf/5q23XbbjqkSAIDPvZmaLuqQQw5J//nPf9Lpp5+eevTokW655Za08cYbz/rqAADoMtrdlf/OO++kPfbYI40aNSqdffbZadCgQbml9De/+U3HVAgAQJfQ7hbT/v37p+WWWy49+OCD+f+DDjoojzcdPnx47uaPBQAAOrzF9OCDD0633XZbDqX1Xyv68MMPp0mTJrW7AAAAmKlg+oMf/CDNMcf/+2cTJkxoWr/UUkulG2+80VYFAKBzgmlMD3XSSSelJZdcMs0777zp2WefbQqs559//sxVAQBAl9fuYHryySen3//+9+mMM85IPXv2bDb29LzzzpvV9QEA0EW0O5heeOGF6ZxzzkmDBw9O3bt3b1q/9tprpyeeeGJW1wcAQBfR7mAaX0e64oorttnF/8knn8yqugAA6GLaHUxXX3319K9//avV+ssvvzx98YtfnFV1AQDQxbR7HtMTTjghDRkyJLecRivplVdemZ588sncxR9fSwoAAJ3SYrrrrrum6667Lt10001pnnnmyUH18ccfz+u22WabmSoCAADa3WIaNttsM3OWAgDQ2BZTAABoWIvpggsumLp16zZDN/j2229/1poAAOiCZiiYnnnmmU0/v/XWW3mS/e222y4NGDAgr7vrrrvS6NGj87c/AQBAhwXTOAu/Zo899kg//OEP06GHHtq07vDDD0+/+tWv8glRRx555EwVAgBA19buMabRMrr99tu3Wh/rIpgCAECnBNOFF144XXPNNa3Wx7q4DAAAOmW6qJEjR6ZvfOMb6ZZbbkkbbbRRXnfPPfekG264IZ177rkzVQQAALQ7mO6///5ptdVWS7/4xS/ytz6F+P32229vCqoAANApE+xHAL344otn5k8BAGDWBdMpU6akcePGpddffz3/XG/zzTefmZsEAKCLa3cwvfvuu9Pee++dXnjhhVRVVbPLYhL+yZMnz8r6AADoItodTA8++OC0/vrrp7/97W9p8cUXn+FvhAIAgFkaTJ9++ul0+eWXpxVXXLG9fwoAALNuHtM48SnGlwIAQENbTA877LB09NFHp1dffTWtueaaac4552x2+VprrTUr6wMAoItodzDdY4898v9Dhw5tWhfjTONEKCc/AQDQacH0ueeem+k7AwCAWRZMl1lmmfb+CQAAzLpgeu21187Q9XbZZZcZvUkAAGh/MN1tt92mex1jTAEA6PBg2vKrRwEAoKHzmAIAQEcQTAEAKIJgCgBAEQRTAACKIJgCADD7BtN33303nXfeeen4449Pb7/9dl73wAMPpJdffnlW1wcAQBfR7m9+euSRR9LAgQPT/PPPn55//vl00EEHpYUWWihdeeWV6cUXX0wXXnhhx1QKAMDnWrtbTI866qi0//77p6effjr17t27af2OO+6YbrvttlldHwAAXUS7g+l9992XvvWtb7Vav+SSS6ZXX311VtUFAEAX0+5g2qtXr/Tee++1Wv/UU0+lvn37zqq6AADoYtodTHfZZZf0wx/+MH3yySf5927duuWxpccee2zaY4892nVb0fW/8847pyWWWCLfztVXX93ecgAA6KrB9Kc//Wn64IMPUr9+/dLHH3+ctthii7TiiiumPn36pFNOOaVdt/Xhhx+mtddeO/36179ubxkAAHT1s/LjbPwbb7wx3X777fkM/Qip6667bj5Tv7122GGHvAAAQLuDac2mm26aFwAAaNgE+zfffHP6yle+klZYYYW8xM833XTTLCkIAICuqd3B9De/+U3afvvt85jSb3/723mZb7758jymHT1WdOLEiXlGgPpl0qRJHXqfAAB0jm5VVVXt+YOllloqHXfccenQQw9ttj5C6amnnjrTX0saZ+VfddVVabfddpvqdUaMGJFGjhzZbN2wYcPS8OHDZ+o+AQDoeP3795+xK1btNM8881RPP/10q/VPPfVUvmxmRSlXXXXVNK8zYcKEavz48c2WMWPGVKUYO3ZsVQJ1lFtLKXWUVEspdZRUSyl1lFRL1BHvE41eStkeoZRaStk3tf3T6BocJ5/NTM1jGi2bLV1zzTV5rGl7xBn9Dz30UF7Cc889l3+OeVGnNrl/DBuoX3r27NnehwAAwOfhrPzVV189z1d6yy23pAEDBuR1d999d7rjjjvS0UcfnX7xi180Xffwww+f5m3df//9aauttmr6/aijjsr/DxkyJP3+979vb2kAAHSlYHr++eenBRdcMP373//OS80CCyyQL6sfMzq9YLrlllvGUIL2lgAAwOdQu4NpdLcDAMCs1u4xpv/85z9neREAANDuYBpzmMak+ieffHJ66aWXOqYqAAC6nHYH05inNOYwvfzyy9Pyyy+ftttuu3TZZZeZ6B4AgM4Npossskg68sgj87RO99xzT1p55ZXzBPdLLLFEPtnp4Ycf/mwVAQDQJbU7mNZbd9110/HHH59bUGNO0t/97ndpvfXWS5tttll67LHHZl2VAAB87s1UMP3kk09yV/6OO+6YlllmmTR69Oj0q1/9Kr322mtp3Lhxed2ee+4566sFAOBzq93TRR122GHpkksuyfOP7rvvvumMM85o9v2n88wzT/rJT36Su/YBAKDDgmlMqv/LX/4y7b777vkrQqc2DtW0UgAAdGhX/oknnpi76VuG0k8//TTddttt+ecePXqkLbbYor03DQBAF9buYBrfbf/222+3Wj9+/Phm33sPAAAdGkxjbGm3bt1arX/rrbfy+FIAAOjQMaYxpjREKN1///2bdeVPnjw5PfLII2njjTeeqSIAAGCGg+n888/f1GLap0+fNNdcczVd1rNnz/SlL30pHXTQQR1TJQAAn3szHEwvuOCC/P+yyy6bjjnmGN32AAA0drqoOCs/vPHGG+nJJ5/MP6+yyiqpb9++s7YyAAC6lHaf/PTRRx+loUOHpsUXXzxtvvnmeYnJ9A888MB8GQAAdEowPfLII9Ott96arrvuuvTuu+/m5Zprrsnrjj766JkqAgAA2t2Vf8UVV6TLL788bbnllk3rdtxxx3wy1KBBg9KoUaNmdY0AAHQBM9WVv+iii7Za369fP135AAB0XjAdMGBAPgFqwoQJTes+/vjjNHLkyHwZAAB0Slf+mWeembbffvu01FJLpbXXXjuve/jhh1Pv3r3T6NGjZ6oIAABodzBdc80109NPP50uvvji9MQTT+R1e+21Vxo8eHCzSfcBAKBDg+ltt92Wv3q05bc8ffrpp/mymD4KAAA6fIzpVlttld5+++1W68ePH58vAwCATgmmVVWlbt26tVr/1ltv+ZpSAAA6vit/9913z/9HKN1///1Tr169mi6bPHlyeuSRR3IXPwAAdGgwnX/++ZtaTPv06dPsRKeePXumL33pS63GnQIAwCwPphdccEH+f9lll03HHHOMbnsAABp7Vn5Mrh/eeOON9OSTT+afV1llldS3b99ZWxkAAF3KTH0l6dChQ9Piiy+ep4aKZYkllkgHHnigryQFAKDzgumRRx6Zbr311nTdddeld999Ny/XXHNNXnf00UfPfCUAAHRp7e7Kv+KKK9Lll1+ettxyy6Z1O+64Yz4ZatCgQWnUqFGzukYAALqAmerKX3TRRVut79evn658AAA6L5gOGDAgnwA1YcKEpnUff/xxGjlyZL4MAAA6pSv/zDPPTNtvv31aaqml0tprr53XPfzww6l3795p9OjRM1UEAAC0O5iuueaa6emnn04XX3xxeuKJJ/K6vfbaKw0ePLjZpPsAANBhwfSTTz5Jq666avrrX//qW54AAGjcGNM555yz2dhSAABo2MlPhxxySDr99NPTp59+OsuKAACAdo8xve+++9LNN9+c/v73v+fxpvPMM0+zy6+88spZWR8AAF1Eu4PpAgsskPbYY4+OqQYAgC6r3cH0ggsu6JhKAADo0mZ4jOmUKVPy2NJNNtkkbbDBBum4447LE+sDAECnBtNTTjkl/e///m+ad95505JLLpnOOuusfCIUAAB0ajC98MIL029+85v87U5XX311uu666/Ik+9GSCgAAnRZMX3zxxbTjjjs2/T5w4MDUrVu39Morr3zmIgAAYIaDacxb2rt371YT7se3QQEAQKedlV9VVdp///1Tr169mtbFt0AdfPDBzeYyNY8pAAAdGkyHDBnSat0+++wzU3cKAAAzHUzNXwoAQBFjTDvKyy+/nFteF1544TTXXHPlrzm9//77G10WAAClf/PTrPTOO+/kCfu32mqrdP3116e+ffump59+Oi244IKNLAsAgK4WTOObpJZeeulmwwSWW265RpYEAEBX7Mq/9tpr0/rrr5/23HPP1K9fv/TFL34xnXvuuY0sCQCArhhMn3322TRq1Ki00kor5W+UGjZsWDr88MPTH/7wh0aWBQBAV+vKj68zjRbTU089Nf8eLaaPPvpo+u1vf9vm9FQTJ07MS71JkyZ1Wr0AAHScblXMnN8gyyyzTNpmm23Seeed17QuWlBPPvnkfLZ+SyNGjEgjR45sti5aWYcPH94p9QIA0H79+/cvv8U0zsh/8sknm6176qmncmBty/HHH5+OOuqoZuvGjRs3ww+2o0Vrbwm1qKPcWkqpo6RaSqmjVktMWddoY8eOLWqblFCLOsqtpZQ6SqqllNeS0l5Pig+mRx55ZNp4441zV/6gQYPSvffem84555y8tCW+DrX+K1FDz549O6laAAA+tyc/bbDBBumqq65Kl1xySU7zJ510UjrzzDPT4MGDG1kWAABdrcU0fOUrX8kLAABdW8O/khQAAIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACK0NBguuyyy6Zu3bq1Wg455JBGlgUAQAP0aOSd33fffWny5MlNvz/66KNpm222SXvuuWcjywIAoKsF0759+zb7/bTTTksrrLBC2mKLLRpWEwAAXXyM6aRJk9If//jHNHTo0NydDwBA19LQFtN6V199dXr33XfT/vvvP9XrTJw4MS8tAy0AALO/blVVVakA2223XerZs2e67rrrpnqdESNGpJEjRzZbN2zYsDR8+PBOqBAAgJnRv3//GbtiVYDnn3++mmOOOaqrr756mtebMGFCNX78+GbLmDFjqlKMHTu2KoE6yq2llDpKqqWUOmq1xMtio5dS6iiplpLqKEVJ26TRNZS2f0qpI5Syf2ZUEV35F1xwQerXr1/aaaedpnm9Xr165aVetLICADD7a/jJT1OmTMnBdMiQIalHjyJyMgAAXTGY3nTTTenFF1/MZ+MDANB1NbyJctttt42BB40uAwCArt5iCgAAQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIDQ2mkydPTj/4wQ/Scsstl+aaa660wgorpJNOOilVVdXIsgAAaIAeqYFOP/30NGrUqPSHP/whrbHGGun+++9PBxxwQJp//vnT4Ycf3sjSAADoSsH0zjvvTLvuumvaaaed8u/LLrtsuuSSS9K9997byLIAAOhqXfkbb7xxuvnmm9NTTz2Vf3/44YfT7bffnnbYYYdGlgUAQFdrMT3uuOPSe++9l1ZdddXUvXv3POb0lFNOSYMHD25kWQAAdLVgetlll6WLL744/elPf8pjTB966KF0xBFHpCWWWCINGTKk1fUnTpyYl3qTJk3qxIoBAOgo3aoGngK/9NJL51bTQw45pGndySefnP74xz+mJ554otX1R4wYkUaOHNls3bBhw9Lw4cM7pV4AANqvf//+5beYfvTRR2mOOZoPc40u/SlTprR5/eOPPz4dddRRzdaNGzduhh9sR3v00UeLqEUd5dZSSh0l1VJKHSXVUkodtVrWXHPNRpeRxo4dW8Q2KW3flFBLKcdI7TgpoZZS6iiplhltB21oMN15553zmNIvfOELuSv/wQcfTD/72c/S0KFD27x+r1698lKvZ8+enVQtAAAdqaHB9Je//GWeYD+64l9//fU8tvRb3/pWOuGEExpZFgAAXS2Y9unTJ5155pl5AQCga2voPKYAAFAjmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIjQ0mL7//vvpiCOOSMsss0yaa6650sYbb5zuu+++RpYEAEBXDKbf+MY30o033pguuuiiNHbs2LTtttumgQMHppdffrmRZQEA0JWC6ccff5yuuOKKdMYZZ6TNN988rbjiimnEiBH5/1GjRjWqLAAAulow/fTTT9PkyZNT7969m62PLv3bb7+9UWUBANAgPRp1x3369EkDBgxIJ510UlpttdXSoosumi655JJ011135VbTtkycODEv9SZNmtRJFQMA0JG6VVVVpQZ55pln0tChQ9Ntt92WunfvntZdd9208sorpzFjxqTHH3+81fWjq3/kyJHN1g0bNiwNHz68E6sGAKA9+vfvP2NXrArwwQcfVK+88kr+edCgQdWOO+7Y5vUmTJhQjR8/vtkyZsyYqhRjx46tSqCOcmsppY6SaimljpJqiTri5bmEpZRaSqqjFKXUUsq+cZy0rZRtMqMa1pVfb5555snLO++8k0aPHp1PiGpLr1698lKvZ8+enVQlAAAdqaHBNEJojCRYZZVV0rhx49J3vvOdtOqqq6YDDjigkWUBANDV5jEdP358OuSQQ3IY3W+//dKmm26aw+qcc87ZyLIAAOhqLaaDBg3KCwAANLTFFAAAagRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAABRBMAUAoAiCKQAARRBMAQAogmAKAEARBFMAAIogmAIAUATBFACAIgimAAAUQTAFAKAIgikAAEUQTAEAKIJgCgBAEQRTAACKIJgCAFAEwRQAgCIIpgAAFEEwBQCgCIIpAABFEEwBACjCbB1MJ06cmC6//PL8f6OVUos6yq2llDpKqqWUOkqqpVbHhAkTUlVVDV2ihhJqKa2ORh8j9cdJo2txvM4ex8mEAvbPjOpWtefahXnvvffS/PPPn8aPH5/mm28+taij6FpKqaOkWkqpo6RaSqmjpFrUUW4tpdRRUi2l1FFaLV2ixRQAgM8PwRQAgCIIpgAAFGG2Dqa9evVKJ554Yv6/0UqpRR3l1lJKHSXVUkodJdVSSh0l1aKOcmsppY6SaimljtJq6RInPwEA8PkxW7eYAgDw+SGYAgBQBMEUAIAiCKYAABRBMIUuynmPAJSmR5qNvPnmm+l3v/tduuuuu9Krr76a1y222GJp4403Tvvvv3/q27dv6mr++9//plGjRqXbb789/zzHHHOk5ZdfPu222255m3Tv3r3RJVKomD7k4YcfTquttlqjSwGA2Wu6qPvuuy9tt912ae65504DBw5Miy66aF7/2muvpZtvvjl99NFHafTo0Wn99ddPXcX999+ft8WKK66Y5pprrhzY99577zRp0qS8LVZfffV0ww03pD59+nR4LYcddlgaNGhQ2myzzVIjPfDAA2nBBRdMyy23XP79oosuSr/97W/Tiy++mJZZZpl06KGHpq9//eudUsuvfvWrdO+996Ydd9wx32fU8qMf/ShNmTIl7b777umHP/xh6tGj4z8bHnXUUW2uP+uss9I+++yTFl544fz7z372s9SZPvzww3TZZZelcePGpcUXXzzttddeTbV0JY8//ni6++6704ABA9Kqq66annjiibxvJk6cmPfPl7/85dTVfPzxx2nMmDFpoYUWyq9j9SZMmJCPm/32269h9ZXmpZdeynNVRsMNzPaq2cRGG21UffOb36ymTJnS6rJYF5d96Utfqkrw6quvViNHjuzw+9lkk02qESNGNP1+0UUX5e0U3n777WqdddapDj/88KozdOvWrZpjjjmqlVZaqTrttNOq//73v1UjrLXWWtWNN96Yfz733HOrueaaK2+DUaNGVUcccUQ177zzVueff36H13HSSSdVffr0qfbYY49qscUWy9tk4YUXrk4++eTq1FNPrfr27VudcMIJVWftmzgWttxyy2ZLrN9ggw3yz1tttVWH17HaaqtVb731Vv75xRdfrJZddtlq/vnnzzUstNBCVb9+/apnn3226gw/+clPqueff75qtOuvv77q2bNnfvy9e/fOv8exMXDgwOrLX/5y1b179+rmm2/ulFpeeuml6o033mj6/bbbbqv23nvvatNNN60GDx5c3XnnnZ1Sx5NPPlkts8wyTa8pm2++efXKK680e32N9Z1l4sSJ1aWXXppfP77+9a/nJX6+7LLL8mUleOihhzp1m9SOl/fff7/V+kmTJlW33nprp9Tw5ptvVv/4xz+aXlfi+I3X2nj//fe//1012nLLLVc99dRTDbv/KVOm5O1zzjnnVNddd13eN7OD2SaYxov2448/PtXL47K4Tld6kYjQ9cwzzzT9Pnny5GrOOefML9zh73//e7XEEktUnSHeRG666abq29/+drXIIovkOnbZZZf8ZIi6Oktsk1rg+OIXv5ifkPUuvvjiavXVV+/wOlZYYYXqiiuuaDoeImD88Y9/bLr8yiuvrFZcccWqM/zoRz/KL5AtA06PHj2qxx57rOoscYy89tpr+ecIOhtvvHH17rvv5t/jDS7C2F577dVptcQ+ifv885//3LCAMWDAgOp73/te/vmSSy6pFlxwwep///d/my4/7rjjqm222aZTatlwww3z8zVcffXV+TUsnsPHHnts9dWvfjU/p2uXd6Tddtut2mmnnXLIePrpp/PPcfy+8MILnR5M4/6XX375/N6yxRZbVIMGDcpL/Bzr4jkc1+lo11xzzTSXn//85522TeJDQnyYjPuL59C+++7bLKB21v6555578gfbeC7H8+b+++/Px0k0jsTrb7wXjBkzpuoMZ511VptLbJ/jjz++6feOtsMOOzS9pkZYj4aq2D7xYTf2yaqrrlq9/vrrVelmm2AarSt/+MMfpnp5XBafsjvDww8/PM0lPl13xhMzHu/tt9/e7AUjDsKPPvoo//7cc891WlivDx3xqSy2wXbbbZefmBGO4822M17Ao1UyXqBCtMBFKKw3bty4/ILV0eI+am+kId7UH3300abfIzzPPffcVWe59957q5VXXrk6+uijmz41NzKYxpt9fHCqd8cdd1RLL710p9VywQUXVLvuumveN3HcxIeqsWPHVp1pvvnma3pexAe42CcPPPBA0+VRz6KLLtoptcwzzzxNLdbxhhYtT/V++ctf5g97HS2et4888kizVp+DDz64+sIXvpA/iHdmMI0PLnGMjB8/vtVlsS4u23bbbTu8jlrrcfw/taWztsl+++2Xj4/77rsv906tt9561frrr5976ULsn6inM/bNN77xjeq9996rfvzjH1dLLbVU/r3mgAMOyB9yOkM83rj/yCn1S6xfcskl888RmjvzNXbYsGG5Eab2nI4W7thX8Vwq3WwTTH/1q19VvXr1yt2y8Qnx7rvvzkv8HOsiCPz617/ulFqm9SJRW98ZLxLxRtq/f//c/RfN9dEdG92yNTfccEP+5NgZ6p8Q9SKcnXjiiTlEd8Y22WeffaoDDzww/7znnntW3//+95tdHt3oa665ZofXES9CsV9CdOXEY4+uv5q//e1v+cWqM0WrRrypxHCHCDwRyDo7mNY+rceHlZYhMMJ6Iz5Ixf+nn356bk2I/RStQdHSHm94nRFM48NSTQw1qe8F6cxtEq1P8cG6Fg5rP9dEnZ3xYSqGwLTVDXvIIYfkN/8YYtBZISzeV6b1YSUCdGd80I3nS7RiT82DDz7YadskaonWypoJEyZUO++8cx4uFK10nfXBIVpJa8dJfNiO+6yvK1pLIxR2hm9961v58bc8bhv54X+VVVbJ+ahe9Gp2RkDuMsE0RJdbfFKLnV0LgvFzrIsWus4SrSsxTjHeNNpaInR0xhMzgkZ0K9W2R3SN1o/RGz16dLMw1IhgWt/q0bKFrCO8/PLLOfDFuLSjjjoqv2nEGLmDDjoor4vxfLF/OloE4ug+iU/w8UIQXbLR4hNjXX/729/mlsEjjzyyaoToMo5WuDhGO/tFMz4URKtbBLDLL7+82eUxLq2z3kimdrxG6BkyZEhuPYylo8WHhNoHmBAh6JNPPmlWT2e9kUS3fRynIXo7WnY9xpjt6CbtaPHB4MILL2zzsginCyywQKeFsMUXX3yawxeuvfbafJ2OFsHvBz/4wVQvj56hzmilDPG8aDluMo7ZaJ2M4znCemfsn6gjegWn9qEuGkU6c3hfDM+K1/XoWWhkMH39//vwHx8u63vpQuSTaOAr3Ww1XdTXvva1vHzyySd56qiwyCKLpDnnnLNT61hvvfXSK6+8ks/ybsu7777bKXNEzjvvvOnSSy/NZ6l++umn+fd62267beossS2mNTVVt27d0jbbbNPhdSyxxBLpwQcfTKeddlq67rrr8n6IM+PjrNVNNtkk3XHHHZ0yc8PIkSObZko46KCD0nHHHZfWXnvt9N3vfjfPILHzzjunk046KTVCzBCw6aab5rOep3YMd4Q4a7hey+M19ldnzeoQx2Nb4v5j+cUvfpGfWx1t2LBhafLkyU2/9+/fv9nl119/faedlR/PmXjs8doWx8f3vve9PBtKTCf25JNP5u0RM1x0tK9+9avpkksuSfvuu2+bM13ErBadUUf4xje+kc/+/8EPfpC23nrrVrPBnHzyyXlGko72ne98J89iMTUxM8s///nP1BliOsJHHnkkrbTSSk3rYnaRv/zlL2nPPfdMX/nKVzqljqWXXjo9++yzadlll82///nPf86ze9TE9ImRDzpLHLcbbrhhPl7+9re/pQsuuCA1wv7775+nAoyc9Nxzz6U11lij6bKYZnOBBRZIpZttposqyVVXXZVfJGIql7a888476dprr01Dhgzp9NqA6Yv5fuNFul+/fo0upSjPPPNM+v73v5/fWD/44IOm0LHBBhvkcBTzI3c1p59+ep6+K46X2geaeNuMObSPOOKI/GGzKzn22GPTQw89lKckbCkaSPbYY4/8ITM+QHT0h/9VVlllqtP/xQermHrtiiuuSJ0pjo34kBcfbt94440c4ltOedZRDjjggGa/77DDDnkax5o4VqOemEayZIIpAM3E28Lrr7+ew0UjeqVKFK1P9V/sUpsruauJ8Bm9PvPNN99UL3/55Zc7tTemLVFj9OJF62EjRI9UfPFNtKDG3Nol+PDDD/M26d27dyqZryTtANFtPHTo0EaXAcykrv4cjpbB6LaOrtFaKO3q2ySCaHwJQiy1UNoVt0m0oE8tlNa60KM1s9HeeuutPFSmUWLI37e//e0cSks5Tt5+++00fPjwVDotph0gvuZx3XXXbTZ2DJh9eA63Zpu0ZpuUu01KqaOkWh4upI7pma1OfipFjB+dlhiQDZTLc7g126Q126TcbVJKHSXVcm0hdXxWWkxn8sSJ6Oqa1qaLy0v/VAJdledwa7ZJa7ZJuduklDpKqmWOQur4rIwxnQkx7urKK6/MJwa0tTzwwAONLhGYBs/h1myT1myTcrdJKXWUVMvihdTxWQmmMzmoOc64m5rpfWIBGstzuDXbpDXbpNxtUkodJdWyXiF1fFbGmM7mkx0D7ec53Jpt0pptUu42KaWOkmr5TiF1fFbGmAIAUARd+QAAFEEwBQCgCIIpAABFEEwByJ5//vl85u5DDz3U6FKALkowBT53Xn311XTYYYel5ZdfPvXq1SstvfTSaeedd04333xzmt1sueWW6Ygjjphl1wMomemigM9dq98mm2ySFlhggfTjH/84rbnmmumTTz5Jo0ePToccckh64oknGl0iAFOhxRT4XBk+fHjujr733nvTHnvskVZeeeW0xhprpKOOOirdfffdTdd78cUX06677prmnXfeNN9886VBgwal1157renyESNGpHXWWSdddNFFadlll03zzz9/+vrXv57ef//9puvEt6mcccYZeX7AaJn9whe+kE455ZSmy1966aV8uxGSF1pooXx/EZxr9t9//7TbbrulkSNHpr59++Y6Dj744DRp0qSmy2+99dZ01lln5ccUS/3fT0vUfOqpp6ahQ4emPn365NrOOeecZteJbfTFL34x9e7dO62//vrpwQcfbHU7jz76aNphhx3ydlp00UXTvvvum95888182S233JJ69uyZ/vWvfzVdP7ZHv379mm1LgBklmAKfG2+//Xa64YYbcsvoPPPM0+ryCIi1QBkhMa4fwe/GG29Mzz77bPra177W7PrPPPNMuvrqq9Nf//rXvMR1TzvttKbLjz/++Pz7D37wg/Tvf/87/elPf8rhLUQr7XbbbZdDYQS3O+64I4e77bffvil4hhhe8Pjjj+eQd8kll+SvFIygGiKQDhgwIB100EHpv//9b15iWMKM+ulPf9oUOCOwDxs2LD355JP5sg8++CB95StfSauvvnr+tpgI4sccc0yzv3/33XfTl7/85Rxe77///rxtI3BG2K4fPhBhdfz48fl+Ylucd955TdsBoF1ign2Az4N77rknvjCkuvLKK6d5vb///e9V9+7dqxdffLFp3WOPPZb/9t57782/n3jiidXcc89dvffee03X+c53vlNttNFG+edY36tXr+rcc89t8z4uuuiiapVVVqmmTJnStG7ixInVXHPNVY0ePTr/PmTIkGqhhRaqPvzww6brjBo1qpp33nmryZMn59+32GKL6tvf/vZ0H3vL6y2zzDLVPvvs0/R71NGvX798++Hss8+uFl544erjjz9udt+xDR588MH8+0knnVRtu+22ze7npZdeytd58sknmx7TOuusUw0aNKhaffXVq4MOOmi6tQJMjRZT4HNjRr/ILlooo+WxvvUxWg6jRTUuq+8OjxbPmsUXXzy9/vrrTbcxceLEtPXWW7d5Hw8//HAaN25c/vtoKY0luvMnTJiQW2Jr1l577TT33HM3/R4tpNGaGcMAPqu11lqr6ecYBrDYYos1qz8uj278+vtu+RjiKwxr9cey6qqr5stqjyG68i+++OJ0xRVX5Mf285///DPXDXRdTn4CPjdWWmmlHMBm1QlOc845Z7Pf47ZjGECYa665pvm3ES7XW2+9HNpaivGknWFa9c+IeAwxm8Hpp5/e6rII6TV33nln/j+GRsTS1jAKgBmhxRT43IgWyRjX+etf/zp9+OGHrS6PMZNhtdVWyy2S9a2SMUY0Lo+W0xkNwRFOpzYF1brrrpuefvrpfCJQnBxVv8SJVPWtkh9//HHT73GCVrRM1lpzo0Vy8uTJaVaLbfDII4/kVs76+275GB577LHcctzyMdTCZ7ScHnnkkencc89NG220URoyZEi7wi9APcEU+FyJUBpBbsMNN8zdyxEOo9v6F7/4RVNX9cCBA/M0UoMHD04PPPBAPjt9v/32S1tssUU+WWhGRBf4sccem7773e+mCy+8MAe0CHbnn39+vjxue5FFFsknWcXJT88991w+wenwww9P//nPf5puJ06EOvDAA3Mw/r//+7904oknpkMPPTTNMcf/+/IcofCee+7JZ+PH2fCzKvTtvffeuQU1Tqyq3fdPfvKTZteJk8iiBXSvvfZK9913X36MMe3WAQcckLdxLPvss0/+MBDrLrjgghx246QrgJkhmAKfKzGpfoTNrbbaKh199NGpf//+aZtttsktm6NGjcrXiUB2zTXXpAUXXDBtvvnmOajG31166aXtuq84Az3u44QTTsgtkHFWf20MZ4wbve222/I0Tbvvvnu+PAJotFDGtFA1MUY1Wl+jjvj7XXbZJZ8hXxNnynfv3j235MYQgJjmalaIVtnrrrsujR07Np91/73vfa9Vl/0SSyyRZxOIALrtttvmMB9n4cdY3AjOMTXWCy+8kM4+++ym7v2Ykur73/9+bgkGaK9ucQZUu/8KgM8s5imN4QMxJRUAWkwBACiEYAoAQBF05QMAUAQtpgAAFEEwBQCgCIIpAABFEEwBACiCYAoAQBEEUwAAiiCYAgBQBMEUAIAiCKYAAKQS/D9GNOQN086/IAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import SpectralCoclustering\n",
    "\n",
    "if use_dataset =='CUB':\n",
    "    k = 3\n",
    "else:\n",
    "    k = 2\n",
    "\n",
    "model = SpectralCoclustering(n_clusters=k, random_state=0)\n",
    "model.fit(prototypes)\n",
    "\n",
    "row_perm = np.argsort(model.row_labels_)\n",
    "col_perm = np.argsort(model.column_labels_)\n",
    "\n",
    "# Apply permutation to matrix\n",
    "spectral_prototypes = prototypes[row_perm][:, col_perm]\n",
    "\n",
    "# Plot with correct original indices as ticks\n",
    "plt.figure(figsize=(8,8))\n",
    "sns.heatmap(spectral_prototypes, cmap='Greys', cbar=False,\n",
    "            linewidths=0.5, linecolor='lightgray')\n",
    "\n",
    "plt.xlabel(\"Concept Index\")\n",
    "plt.ylabel(\"Prototype Index\")\n",
    "\n",
    "# Set ticks to original indices (after reordering)\n",
    "plt.yticks(ticks=np.arange(len(row_perm)), labels=row_perm, rotation=0)\n",
    "plt.xticks(ticks=np.arange(len(col_perm)), labels=col_perm, rotation=90)\n",
    "\n",
    "plt.title(\"Spectral Co-Cluster Prototype Activation Map\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43e5d79b",
   "metadata": {},
   "source": [
    "## Analyse Clusters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d01e9a95",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from src.utils.helpers import load_concept_names\n",
    "from src.preprocessing.concept_processing import select_common_concepts\n",
    "\n",
    "concept_names_path = os.path.join(PROJECT_ROOT, 'data', 'CUB', 'concepts.txt')\n",
    "\n",
    "concept_names = load_concept_names(concept_names_path)\n",
    "\n",
    "cub_concepts = select_common_concepts(None, None, CUB=True)\n",
    "\n",
    "labels_file = os.path.join(PROJECT_ROOT, 'data', 'CUB', 'classes.txt')\n",
    "class_names = pd.read_csv(labels_file, sep=' ', header=None, names=['class_id', 'class_name'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "77ef9a3b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'001.Black_footed_Albatross'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class_names.iloc[0]['class_name']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "4f38c7dd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--- ROW CLUSTER 0 ---\n",
      "['003.Sooty_Albatross', '004.Groove_billed_Ani', '005.Crested_Auklet', '006.Least_Auklet']\n",
      "\n",
      "\n",
      "--- ROW CLUSTER 1 ---\n",
      "['001.Black_footed_Albatross', '002.Laysan_Albatross', '007.Parakeet_Auklet', '008.Rhinoceros_Auklet', '009.Brewer_Blackbird', '010.Red_winged_Blackbird']\n",
      "\n",
      "\n",
      "--- COLUMN (CONCEPT) CLUSTER 0 ---\n",
      "['has_bill_shape::curved_(up_or_down)', 'has_wing_color::blue', 'has_wing_color::rufous', 'has_wing_color::grey', 'has_wing_color::orange', 'has_wing_color::black', 'has_wing_color::red', 'has_upperparts_color::rufous', 'has_underparts_color::rufous']\n",
      "\n",
      "\n",
      "--- COLUMN (CONCEPT) CLUSTER 1 ---\n",
      "['has_bill_shape::needle', 'has_bill_shape::spatulate', 'has_bill_shape::all-purpose', 'has_upperparts_color::blue', 'has_upperparts_color::grey', 'has_upperparts_color::orange', 'has_upperparts_color::black', 'has_upperparts_color::red', 'has_underparts_color::blue']\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# Let's assume you have these names from your original data\n",
    "# If you don't, you can just use the indices\n",
    "row_names = [f'{class_names.iloc[i][\"class_name\"]}' for i in range(prototypes.shape[0])]\n",
    "concept_names = [f'{concept_names[cub_concepts[i]]}' for i in range(prototypes.shape[1])]\n",
    "\n",
    "# Create a DataFrame to hold the results for easy analysis\n",
    "row_cluster_info = pd.DataFrame({\n",
    "    'row_name': row_names,\n",
    "    'cluster_id': model.row_labels_\n",
    "})\n",
    "\n",
    "col_cluster_info = pd.DataFrame({\n",
    "    'concept_name': concept_names,\n",
    "    'cluster_id': model.column_labels_\n",
    "})\n",
    "\n",
    "# Now, group by cluster and see the members\n",
    "for cluster_id in range(k):\n",
    "    print(f\"--- ROW CLUSTER {cluster_id} ---\")\n",
    "    members = row_cluster_info[row_cluster_info['cluster_id'] == cluster_id]['row_name'].tolist()\n",
    "    print(members)\n",
    "    print(\"\\n\")\n",
    "\n",
    "for cluster_id in range(k):\n",
    "    print(f\"--- COLUMN (CONCEPT) CLUSTER {cluster_id} ---\")\n",
    "    members = col_cluster_info[col_cluster_info['cluster_id'] == cluster_id]['concept_name'].tolist()\n",
    "    print(members)\n",
    "    print(\"\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "0a43bee5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bicluster Mean Activations:\n",
      " [[0.52777779 0.        ]\n",
      " [0.05555556 0.42592594]]\n"
     ]
    }
   ],
   "source": [
    "# Get the boundaries of the clusters in the reordered matrix\n",
    "row_cluster_sizes = np.bincount(model.row_labels_)\n",
    "col_cluster_sizes = np.bincount(model.column_labels_)\n",
    "\n",
    "# Cumulative sums to find the indices where clusters change\n",
    "row_boundaries = np.insert(np.cumsum(row_cluster_sizes), 0, 0)\n",
    "col_boundaries = np.insert(np.cumsum(col_cluster_sizes), 0, 0)\n",
    "\n",
    "# Create a matrix to store the average activation of each bicluster\n",
    "bicluster_means = np.zeros((k, k))\n",
    "\n",
    "for i in range(k): # Row cluster index\n",
    "    for j in range(k): # Column cluster index\n",
    "\n",
    "        # Get the slice for this block from the reordered matrix\n",
    "        row_start, row_end = row_boundaries[i], row_boundaries[i+1]\n",
    "        col_start, col_end = col_boundaries[j], col_boundaries[j+1]\n",
    "\n",
    "        block = spectral_prototypes[row_start:row_end, col_start:col_end]\n",
    "\n",
    "        # Avoid division by zero if a cluster is empty\n",
    "        if block.size > 0:\n",
    "            bicluster_means[i, j] = block.mean()\n",
    "\n",
    "# Visualize the bicluster means\n",
    "plt.figure(figsize=(5, 4))\n",
    "sns.heatmap(bicluster_means, annot=True, cmap='viridis',\n",
    "            xticklabels=[f'Col Cluster {i}' for i in range(k)],\n",
    "            yticklabels=[f'Row Cluster {i}' for i in range(k)])\n",
    "plt.title(\"Mean Activation of Biclusters\")\n",
    "plt.show()\n",
    "\n",
    "print(\"Bicluster Mean Activations:\\n\", bicluster_means)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57d1b0b7",
   "metadata": {},
   "source": [
    "# NMF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "61bb7e03",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/1BQFf3cu3dvdx0AAAAQt7B68OBBW758+RHLtezw4cN5VRcAAACQ+9kAbr75ZrvllltszZo1dsEFF7hl+oKAxx57zF0HAAAAxC2sPvnkk+4rV5966inbvHmzW1a5cmXr27ev3X333XlWGAAAAFAkt10A3njjDevUqZPdc889tmvXLrecgVUAAACIe5/VIkWKWPfu3W3//v3pIZWgCgAAAG8GWKmf6jfffJM/1QAAAAB/pM+q5lNV39SffvrJ6tatayVKlMhw/dlnn53bVQIAAAB5E1ZvuOEG9/9dd92VviwhIcGCIHD/6wsCAAAAgLiE1XXr1uXJHQMAAAB5HlarVauW2z8BAAAAYhNWRV8IMGzYMFu2bJn7vVatWtazZ0875ZRTjq4KAAAAIC9mA5g+fboLp/Pnz3eDqXTRN1idddZZ9vHHH+d2dQAAAEDetazee++91qtXL/f1qpHL+/XrZ1dccUVuVwkAAADkTcuqTv3fcsstRyzv0qWLLV26NLerAwAAAPIurJYvX96+/fbbI5ZrWYUKFXK7OgAAACDvugF069bN/vGPf9jatWutQYMGbtnnn39uQ4YMsd69e+d2dQAAAEDehdX777/fSpUqZU899ZT179/fLatSpYo9+OCDGb4oAAAAAIh5WNW3VGmAlS67d+92yxReAQAAgLj3WZWDBw/ajBkz7I033khftmnTJtuzZ09e1gYAAIACLtctq+vXr7crr7zSNmzYYKmpqW6qKrWsqs+qfh8xYkT+VAoAAIACJ9ctq/qmqnr16tlvv/1mxYsXT1/eunVrmzlzZl7XBwAAgAIs1y2rs2fPti+++MISExMzLK9evbpt3LjxDxcUBIHrFwsAAADkumX18OHDdujQoSOW//TTT3ky0CopKcl98QAAAACQ65bVZs2a2bBhw+zll192v6sVVAOrBgwYYC1atIh6PVnNyaogrK9yLVu2rPv96aefznY96ierS7i0tLSo6wAAAMAxFFY1v2rz5s2tVq1atn//fmvfvr2tWrXKypUrZ2+++WbU61HgrVOnjpUpU+aIbgBqWS1RokRU3QEGDx5sAwcOzLDstttuy8UjAgAAwDETVk888URbtGiRvf322+5/tarecsst1qFDhwwDrnLy6KOPutZZhd/LLrssfXnRokXttddec2E4GvpigshW2tWrV9vw4cNz8agAAABwTIRV90dFirhwqkvI5s2brW/fvvb8889HtY57773XmjZtah07drSrrrrKtZAqqB5NH1ddwkUO/gIAAEABGGD1/fffuzCqFtEdO3a4Zb/++qv7NqsaNWrYrFmzcnXn559/vn399df2yy+/uOmwlixZwkwAAAAAyH3L6vvvv2/XXnut+/Yqefzxx23kyJHWtm1bq1u3rk2aNMl9WUBulSxZ0saMGWNvvfWWXX755ZnONAAAAICCKeqW1UGDBlmPHj1s165dboT+2rVr7a677rIPP/zQpk2bdlRBNdwNN9xgCxYssIkTJ1q1atX+0LoAAABQwMLqihUrXFhVS+idd95phQoVsqFDh7pT+XlFg7datWrlZgIAAAAAog6ru3fvttKlS7ufCxcu7Eb+q58qAAAA4MVsANOnT7fk5OT0b7KaOXOmGxQVrmXLlnlbIQAAAAqsXIXVTp06Zfj91ltvzfC7RvIzQAoAAAAxD6tqSQUAAAC8nWcVAAAA8C6szps3L+oV7t271315AAAAABCTsHrjjTda8+bN7T//+Y/9/vvvmd5m6dKl9q9//ctOOeUU961UAAAAQEz6rCqIDh8+3P79739b+/bt7fTTT7cqVapYsWLF7LfffrPly5fbnj17rHXr1vbRRx9Z7dq1/3BhAAAAQFRhtWjRou7bqnTRt0zNmTPH1q9fb/v27bM6depYr1697NJLL7UTTjgh/ysGAABAgZGrqaukXr167gIAAADkN2YDAAAAgLcIqwAAAPAWYRUAAADeIqwCAACgYIRVfSEAAAAAELew2rRpU9u4ceMRy+fPn2/nnHNOXtUFAAAA5D6s6osAzj77bHv77bfd74cPH7YHH3zQLr74YmvRokV+1AgAAIACKtfzrH7wwQf2wgsvWJcuXWzy5Mn2ww8/uC8ImDp1qjVr1ix/qgQAAECBlOuwKj169LCffvrJhgwZYkWKFLFPPvnEGjRokPfVAQAAoEDLdTeA3377za655hobPny4vfTSS9a2bVvXovriiy/mT4UAAAAosHLdspqSkmInn3yyffPNN+7/bt26uf6rt99+u+sioAsAAAAQl5bV7t2722effeaCasj1119vixYtsrS0tDwpCgAAADiqsHr//fdboUL//8/279+fvvzEE0+0jz/+mK0KAACA+IVVTVX18MMPW9WqVa1kyZK2du3a9BD7yiuv5F1lAAAAKPASgiAIcvMHDz30kI0ZM8b9r/6qS5YssRo1arh+q8OGDbO5c+davKkmAAAA+EvjoKIS5NIpp5wSzJgxw/1csmTJYM2aNe7nZcuWBWXKlAl8sHjx4sAXvtTiSx0+1eJLHT7VQh3+1qI6dMj24eLTNvGFL8+PL3Wwn/hbh/iyn0Qr190A9FWrp556aqbdAw4cOJDb1QEAAABZynVYrVWrls2ePfuI5RMmTLBzzz03t6sDAAAA8m6e1QceeMA6derkWljVmjpx4kRbsWKFjR071n3lKgAAABC3ltVWrVrZlClTbMaMGVaiRAkXXpctW+aWXXHFFXlWGAAAAJDrllVp1KgRc6oCAADAv5ZVAAAAwKuW1eOPP94SEhKiWuH27dv/aE0AAABA9GFVk/2HbNu2zQYNGmTNmze3+vXru2X6IoDp06e7b7ECAAAAYhpWNfo/5JprrnHfXnXHHXekL7vrrrvs+eefd4OuevXqlWfFAQAAoGDLdZ9VtaBeeeWVRyzXMoVVAAAAIG5htWzZsjZ58uQjlmuZrgMAAADiNnXVwIEDrWvXrvbJJ5/YhRde6JZ9+eWXNm3aNBs5cmSeFQYAAADkOqx27tzZzjzzTHv22Wfdt1eJfp8zZ056eAUAAADi9qUACqXjx4/PkwIAAACAPA2rhw8fttWrV9vWrVvdz+EaN258NKsEAAAA/nhYnTdvnrVv397Wr19vQRBkuE5fHHDo0KHcrhIAAADIm7DavXt3q1evnn3wwQdWuXLlqL/ZCgAAAMj3sLpq1SqbMGGCnXrqqbm+MwAAACBf51nV4Cr1VwUAAAC8a1m988477e6777YtW7ZY7dq1rWjRohmuP/vss/OyPgAAABRguQ6r11xzjfu/S5cu6cvUb1WDrRhgBQAAgLiG1XXr1uVpAQAAAECehdVq1arl9k8AAACA/A2r77//flS3a9my5dFVAgAAABxtWL366qtzvA19VgEAABCXsBr5taoAAACAd/OsAgAAALFCWAUAAMCxMxtAfvr999/tnXfecd+QVblyZWvXrp2VLVs2279JTU11l3BpaWn5XCkAAACO+ZbVWrVq2fbt293PP/74o6WkpFivXr3s448/tgEDBrjrc5rXdfDgwZacnJzhMmrUqBg9AgAAAByzYXX58uV28OBB93P//v2tSpUqtn79eps/f777X1/det9992W7Dv3dzp07M1y6du0ao0cAAAAA77oB7NixwyZMmGBr1qyxvn372gknnGALFy60ihUrWtWqVY+qkLlz59qIESNcy6iULFnSBg4caDfccEO2f5eUlOQu4RITE4+qBgAAAPzJw+p3331nl19+uQuVP/zwg3Xr1s2F1YkTJ9qGDRts7NixuVqf5maV/fv3u36q4RR8f/nll9yWCAAAgILaDaB3797WuXNnW7VqlRUrVix9eYsWLeyzzz7LdQFNmza18847z3bt2mUrVqzIcJ26AuQ0wAoAAADHrly3rH711Vf20ksvHbFcraBbtmzJ1bo0iCqcTv2HmzJlijVq1Ci3JQIAAKCghlX1D1UraKSVK1da+fLl/1BYjfTEE0/ktjwAAAAU5G4ALVu2tIceesgOHDiQ3udUfVX79etn11xzTX7UCAAAgAIq12H1qaeesj179liFChVs37591qRJEzv11FOtVKlS9sgjj+RPlQAAACiQct0NQLMAaNL+OXPmuJkBFFw1QEozBAAAAABefN3qxRdf7C4AAACAV99gNXPmTPv73/9up5xyirvo5xkzZuR9dQAAACjQch1WX3zxRbvyyitdH9WePXu6S+nSpd08qy+88EL+VAkAAIACKdfdAB599FEbOnSo3XHHHenL7rrrLmvYsKG7rkePHnldIwAAAAqoXLes7tixw7WsRmrWrJnt3Lkzr+oCAAAAjm6e1UmTJh2xfPLkya7vKgAAABC3bgC1atVy86l+8sknVr9+fbds3rx59vnnn9vdd99tzz77bIbuAQAAAEDMwuorr7xixx9/vC1dutRdQsqUKeOuC9E3WxFWAQAAENOwum7duj90hwAAAEC+9VmdNWtWbv8EAAAAiE1Y1UwA+iKAQYMG2Y8//nh09woAAADkR1jduHGjm2N1woQJVqNGDWvevLm98847lpaWlttVAQAAAHkbVsuVK2e9evWyb7/91r788ks7/fTT7fbbb7cqVaq4AVWLFi3K7SoBAACAvAmr4c477zzr37+/a2nds2ePvfrqq1a3bl1r1KiRff/9939k1QAAAMDRhdUDBw64bgAtWrSwatWq2fTp0+3555+3n3/+2VavXu2WXXfddXlfLQAAAAqUXE9ddeedd9qbb75pQRDYjTfeaI8//rilpKSkX1+iRAl78sknXbcAAAAAIKZhVV8E8Nxz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brrpJtu0aVNM6wgdX3Q8UR3HH3+8e26+/PLLmNcRrnv37u42w4YNy/M6oqmlc+fORxxbrrzyypjXIcuWLbOWLVu6b5HSc6T36Q0bNlisa8nseKvLE088kad1EFYjvP3229a7d283JcPChQutTp061rx5c9u6dWtM6/j999/dfSs4x9Onn37q3ujnzZtnH3/8sTuY6qCu+mLtxBNPdMHw66+/diHosssus1atWtn3339v8aI3/JdeesmF6Hg466yzbPPmzemXOXPmxKWO3377zRo2bGhFixZ1HyCWLl1qTz31lHuTi/XzEb49tM/KddddZ7E2ZMgQ9wHr+eefd28s+v3xxx+35557Lua1dO3a1W2LcePG2eLFi91rWOFDHzDieRzT9nj22WdtxIgRLgjpTVfHW33feCzr0PUXX3yxe47yW3a17N27173v6EOO/leIVuOAQkks65DTTz/d7bvaX3Rc0QdB7Te//PJLTOsImTRpknsfUmjKL9HUonAafox58803Y17HmjVr3P6qDxOffPKJfffdd26fUQNbrGsJ3xa6vPrqqy6sXnPNNXlbiKauwv+54IILgh49eqT/fujQoaBKlSrB4MGD41aTnqZJkyYFPti6daur59NPPw18cPzxxwejRo2Ky33v3r07OO2004KPP/44aNKkSdCzZ8+Y3v+AAQOCOnXqBD7o169fcPHFFwe+0XNyyimnBIcPH475ff/tb38LunTpkmFZmzZtgg4dOsS0jr179waFCxcOpk6dmmH5eeedF9x3331xO47pOalUqVLwxBNPpC/bsWNHkJSUFLz55psxqyPcunXr3PXffPNNvt1/tLWEzJ8/391u/fr1ca1j586d7nYzZsyIeR0//fRTULVq1WDJkiVBtWrVgqFDh+ZbDdnV0qlTp6BVq1b5ft851XH99dcHHTt2jGkdWdUSSdvnsssuy/P7pmU1TFpammu1U4tDSKFChdzvc+fOjWttvti5c6f7/4QTTohrHTrF+tZbb7lPfeoOEA9qcf7b3/6WYX+JNZ0yVUtDjRo1rEOHDvlyGiga77//vtWrV8+1YKq7yLnnnmsjR460eL+eX3/9devSpYv7pB9rOtU+c+ZMW7lypft90aJFroXqr3/9a0zrOHjwoHu9RLa66LR7vFriZd26dbZly5YMrx+d0lTXK463GY+52n/LlCkT19fS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yD788EO76667MtSvgKZLsWLF7PTTT7fBgwfrq7etoCtXrpzddNNNNmDAgHiXAiAMYRXAUbcO1q1b1/73v//ZE088YYsXL7Zp06bZpZdeaj169Ih3eTCz5557zq677jorWbJkhuXdunWzzZs324oVK6x///72wAMP2IgRI/K1lrS0tHxb94EDB/JsXTfffLONHz/etm/fnmfrBPDHEFYBHJXbb7/dtc7Nnz/frrnmGtdCd9ZZZ1nv3r1t3rx56bfbsGGDtWrVygWm0qVLW9u2be3nn39Ov/7BBx+0c845x8aNG2fVq1e35ORku+GGG2z37t3ptzl8+LA9/vjjduqpp7oW3JNOOskeeeSR9Ot//PFHt16dTj7hhBPc/SlMh3Tu3NmuvvpqGzhwoJUvX97V0b179/QApes//fRTe+aZZ9JbHcP/PjuqWafZu3TpYqVKlXK1vfzyyxluo2107rnnupbMevXq2TfffHPEepYsWWJ//etf3XaqWLGiO32v09LyySefWGJios2ePTv99toeOmUdvi3DHTp0yCZMmOBauiMdd9xxVqlSJatWrZoLZ2effbZ9/PHH6denpqZanz59rGrVqlaiRAm78MILXQ3h3n33Xfd86/nQNnjqqaeO2C4PP/ywa6nU9v7HP/6Rftpf20g1tG7d2rZt23ZEfZMnT7bzzjvPbS+12ut5O3jwYPr1en6GDx9uLVu2dPWF9oWc/m7VqlXWuHFjd32tWrUyPOYQPaYqVarYpEmTMt2uAOIgAIBc2rZtW5CQkBA8+uij2d7u0KFDwTnnnBNcfPHFwYIFC4J58+YFdevWDZo0aZJ+mwEDBgQlS5YM2rRpEyxevDj47LPPgkqVKgX/+te/0m9zzz33BMcff3zw2muvBatXrw5mz54djBw50l2XlpYWnHnmmUGXLl2C7777Lli6dGnQvn374IwzzghSU1PdbTp16uTu4/rrrw+WLFkSTJ06NShfvnz6fezYsSOoX79+0K1bt2Dz5s3ucvDgwUwfk2rv2bNn+u/VqlULTjjhhOCFF14IVq1aFQwePDgoVKhQsHz5cnf97t273X2pJt33lClTgho1auice/DNN9+42/z222/uNv379w+WLVsWLFy4MLjiiiuCSy+9NP1++vbt6+5Lter6xMTEYPLkyVlue91G97Fly5Ys6z98+LDb3scdd5zbNiFd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",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import NMF\n",
    "import numpy as np\n",
    "\n",
    "# Ensure matrix is float and non-negative\n",
    "X = prototypes.astype(float)\n",
    "\n",
    "model = NMF(n_components=k, init='nndsvd', random_state=0)\n",
    "W = model.fit_transform(X)   # shape: (200, k)\n",
    "H = model.components_        # shape: (k, 112)\n",
    "\n",
    "# Reorder rows by their dominant component\n",
    "row_order = np.argsort(np.argmax(W, axis=1))\n",
    "\n",
    "# Reorder columns by their dominant component\n",
    "col_order = np.argsort(np.argmax(H, axis=0))\n",
    "\n",
    "# Reordered matrix\n",
    "X_reordered = X[row_order][:, col_order]\n",
    "\n",
    "# Plot it\n",
    "plt.figure(figsize=(8, 8))\n",
    "sns.heatmap(X_reordered, cmap='Greys', cbar=False, linewidths=0.5, linecolor='lightgray')\n",
    "plt.xlabel(\"Concept Index (Reordered)\")\n",
    "plt.ylabel(\"Prototype Index (Reordered)\")\n",
    "plt.title(\"Clustered Binary Prototype Activation Map (NMF)\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "5aac0691",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.43835698, 0.54648895, 0.92233546, 1.15962527, 0.86163775,\n",
       "       1.25220349, 0.38580855, 1.22148981, 0.80791753, 1.05311084])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,10))\n",
    "plt.imshow(W[:50])\n",
    "np.sum(W, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "5a5bb4de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "====================\n",
      "  NMF CLUSTER MEMBERS\n",
      "====================\n",
      "--- NMF ROW CLUSTER 0 ---\n",
      "['002.Laysan_Albatross', '008.Rhinoceros_Auklet', '009.Brewer_Blackbird', '010.Red_winged_Blackbird']\n",
      "\n",
      "\n",
      "--- NMF ROW CLUSTER 1 ---\n",
      "['001.Black_footed_Albatross', '003.Sooty_Albatross', '004.Groove_billed_Ani', '005.Crested_Auklet', '006.Least_Auklet', '007.Parakeet_Auklet']\n",
      "\n",
      "\n",
      "--- NMF COLUMN (CONCEPT) CLUSTER 0 ---\n",
      "['has_bill_shape::needle', 'has_bill_shape::spatulate', 'has_bill_shape::all-purpose', 'has_upperparts_color::grey', 'has_upperparts_color::orange', 'has_upperparts_color::black', 'has_upperparts_color::red', 'has_underparts_color::blue']\n",
      "\n",
      "\n",
      "--- NMF COLUMN (CONCEPT) CLUSTER 1 ---\n",
      "['has_bill_shape::curved_(up_or_down)', 'has_wing_color::blue', 'has_wing_color::rufous', 'has_wing_color::grey', 'has_wing_color::orange', 'has_wing_color::black', 'has_wing_color::red', 'has_upperparts_color::blue', 'has_upperparts_color::rufous', 'has_underparts_color::rufous']\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.decomposition import NMF\n",
    "\n",
    "# 1. Get the \"hard\" cluster labels from the NMF weight matrices.\n",
    "# The cluster ID for each item is the index of the component with the maximum weight.\n",
    "nmf_row_labels = np.argmax(W, axis=1)\n",
    "nmf_col_labels = np.argmax(H, axis=0)\n",
    "\n",
    "# Create a DataFrame to hold the NMF results\n",
    "nmf_row_cluster_info = pd.DataFrame({\n",
    "    'row_name': row_names,\n",
    "    'cluster_id': nmf_row_labels  # <-- Use the NMF labels\n",
    "})\n",
    "\n",
    "nmf_col_cluster_info = pd.DataFrame({\n",
    "    'concept_name': concept_names,\n",
    "    'cluster_id': nmf_col_labels  # <-- Use the NMF labels\n",
    "})\n",
    "\n",
    "# Now, group by cluster and see the members\n",
    "print(\"=\"*20)\n",
    "print(\"  NMF CLUSTER MEMBERS\")\n",
    "print(\"=\"*20)\n",
    "\n",
    "for cluster_id in range(k):\n",
    "    # Added \"NMF\" to the printout to distinguish from spectral results\n",
    "    print(f\"--- NMF ROW CLUSTER {cluster_id} ---\")\n",
    "    members = nmf_row_cluster_info[nmf_row_cluster_info['cluster_id'] == cluster_id]['row_name'].tolist()\n",
    "    print(members)\n",
    "    print(\"\\n\")\n",
    "\n",
    "for cluster_id in range(k):\n",
    "    print(f\"--- NMF COLUMN (CONCEPT) CLUSTER {cluster_id} ---\")\n",
    "    members = nmf_col_cluster_info[nmf_col_cluster_info['cluster_id'] == cluster_id]['concept_name'].tolist()\n",
    "    print(members)\n",
    "    print(\"\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "744de084",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAF2CAYAAAAhuuwRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPUBJREFUeJzt3Ql4E1XbBuCnhbZQlhYsUJZKP/Z9kU1AxQWossmiIor0QwVkE0VQEVlEARVFVKooCiKoIIvLzy6IIoIWKavsuywtLZQCBQok81/v4ZuQpElN0rRkkue+roFmMlsmk3nnnPPOmSBN0zQQERHdZME3ewOIiIgEAxIREfkEBiQiIvIJDEhEROQTGJCIiMgnMCAREZFPYEAiIiKfwIBEREQ+gQGJiIh8AgMSGUJQUBDGjh17U9YdGxuL//73v/Bl+/btQ9u2bREREaH21ffff++V5d59991qMNL3RcZl2ID0xRdfqIO+UKFCOH78eLb35UdUp06dbCcWmad169YOlzl9+nT1vgx//fWXZbz8sPTx9sO0adPc2u5ffvnFMu+cOXMcTtOyZUv1vv32+7KmTZuqbf744489XsbSpUtv2kls/fr1at1nz56FEcXHx2P79u0YP348Zs+ejcaNGzuc7vDhw9mO4eLFi6NBgwaYOnUqTCYTfN2JEyfUd7Vly5abvSnkZQVhcFlZWXjzzTfx4YcfujS9BLA1a9YgOTkZ0dHRNu999dVX6v3Lly87nFdOtkWLFrUZ16xZM4+2W9bz9ddfo2fPntlOGHJylPeNQq7ON27cqAK+7MP+/ft7HJASEhIcBqVLly6hYMG8O1xln7/22muqJBQZGWnz3p49exAc7LvXbrJvNmzYgJEjR2LQoEEuzdOjRw+0a9dO/Z2RkaH2/eDBg3HkyBFMmjTJMt3KlSvhiwFJvis53iSQkv/w3V+Zi+SAlJKNHKSukNKHBJV58+bZjD927Bh+++03tG/f3um8Dz30kAog1kPVqlU92m45Gfz0009IS0uzGS9BqkyZMk6vcH2RlPRKly6Nd999V53YJah6mwTovAxIOQkLC0NISAh8VWpqqvrfPpDm5LbbbrMcwwMHDsTixYvRpEkTdfxZCw0NVUMgyMzMvNmbEPAMH5BeeeUVVc0gpSRXT2xdu3bN9sP75ptvUKJECcTFxXm0HQcOHFCDqx588EF1ops/f77NeNmuRx55BAUKFHB68m/UqBEKFy6MkiVL4tFHH8U///xjM40E1ocffhi33nqrWkdMTAyef/55dSVtTUoDEpylyrNz587q71KlSmHYsGFuVd3INkuw7tChg2rDsN+3uj///FMFYtnPRYoUQb169fD+++9btkVKR8K6OslRm8SCBQvU619//TXbOj755BP13o4dO9Trbdu2qWVXqlRJffdSKn7yySdx+vRpyzyy3OHDh6u///Of/1jWrQdWR21IBw8eVPtYvoPw8HDcfvvtWLJkicPq2W+//VZVpVWoUEFtw3333Yf9+/e7tG83b96MBx54QFWryfcj8/7xxx82216xYkX1t3wGWZ9sr7tkPrkQsg/6jtqQpAZB1lutWjX1ecqWLat+Uzkd/7L/HG2XXh1uTS7U7rjjDhVg5TNXr15d/c71fSqBU/Tu3dvyXUkVvvVxdv/996tjUb6bVq1a4ffff3e43p07d+Kxxx5Tx6SsU0jtiSxbvi/5/cjnk99rXlxokZ9V2ckJpFevXqqU9PLLL6NcuXL/Oo8cgNIALD+gypUr25xUc7oSPnPmjM1rCRpyIAs5UQhXD1r5ochBLoFQr+LaunUr/v77b3z22WfqRGpPTmqjRo1SAevpp59WV8ZSVXnXXXepE5d+hSxB7uLFi2q5t9xyCxITE9V0Ugq0D4ASeCQIS9XjO++8g1WrVqmSjuwXV6re5McvJ9eZM2eqK2k5MUm1nX4CsT7JSMCSH/eQIUNUYNi1a5e6MpfX/fr1U6VcmU7aQHIipVg5UcmJXk421qTkW7t2bUv7myxPgoecYGSdsn8//fRT9b+c2OWkJNu8d+9e9V289957iIqKUvNKcHYkJSUFLVq0UPv42WefVft41qxZ6NSpkwqWXbp0sZleLpakyk8CvVSPvf3223j88cfVvsuJbOOdd96pgtGLL76ojk0JuBIgJBjLdybbLt+7XHDo1XD21cqOyLbrpfNz585h2bJlWL58OUaMGJHjfHK8yPe4evVqdTEk39358+fVfpaLAP335Cn5zLJ8uVgZN26cCghyfOkBpWbNmmr86NGj0bdvX7V/hHwf4ueff1YBXC7axowZo/a7HJv33nuvulCTtk5rclEhtRwTJkyA/iSebt26qe2QKkwJoqdOnVKf7+jRox4Fe3KDZlAzZ86Uo0fbuHGjduDAAa1gwYLas88+a3m/VatWWu3atW3mqVixota+fXvt2rVrWnR0tPb666+r8Tt37lTL+vXXX22WqxszZowaZz/I8qyXbf3amTVr1qh558+fry1evFgLCgrSjh49qt4bPny4VqlSJYfbf/jwYa1AgQLa+PHjbZa3fft29dmtx1+8eDHbeidOnKjWdeTIEcu4+Ph4tS3jxo2zmbZhw4Zao0aNNFcMGjRIi4mJ0cxms3q9cuVKtczNmzdbppH9/Z///Eftn/T0dJv59fnEwIED1byOyHj5HnQ9evTQSpcurZatO3nypBYcHGzzeRzti2+++UYtb+3atZZxkyZNUuMOHTqUbXrZbtlXuueee05N+9tvv1nGnT9/Xn3G2NhYzWQy2XzXNWvW1LKysizTvv/++2q8fHc56dy5sxYaGqqOb92JEye0YsWKaXfddZdlnGyzLE8+w7/Rp3U09O/f3+b70I9DGXQzZsxQ006ePDnbsq3ntf++ZP85+n3ovy3de++9p16npqY6/Qzy25Rp5Ldqv/6qVatqcXFxNtsix4B8N23atMm2XjmOrMnx6eq+JO8zfJWdkOqYJ554Ql35njx58l+nl5KNlDLkiljIFb1Ua+lXW84sXLhQXSnpg8ynk5KRu0V6KaVJlc/cuXPV1Zn8L1e5jixatAhms1ltt1zZ6oNc9csVniRq6KQ6z7peXKaTK0hZh5Sk7D3zzDM2r2U/SKni31y7dk2VSLp3726pdpErUWlPst43ss5Dhw7hueeey9bOYV9d4ypZp1y5ShWOTkonso/kPUf7QqqaZF9I9ZpISkryaN2SACBX2noVj5BSiVyxyzEg1UDWpHRm3Q6jH2c57WMpiUhCgVSlyvGtkxKmlPDXrVunSjaekm3Vj2M5rqUdSUpfQ4cOzXE+mVZKkFJ6sOfpd2lNPz5++OEH9V26Q7LuJMFG9o9Uyeq/EfkNSA3G2rVrsy3T/tiX40W+Kzmu0tPTc/15yD1+EZDEq6++qk6QrrYlyUErJw6pJpPqOql++LcflFSNScq4PkiCRG5IFYxUGcj65ccibUGyXY7ID00CigQfqUqyHqTqS07OOqlakDp7CXZ6u5BetSVVRtakDcC+akqqIV35McoJU6oN5eQs1SoySOC55557VLDXf/x624I309j1NgLr5BT5W5JcpG3DuppVqpWkfURONvJZpZrX0b5wlWSiSbuGPalO0t+3Jm151vRq3pz2sexXqVZzth7Zt/Zth+6Q40g/jqXaT1K+BwwYgClTpqj0cWfku5RtyqsEE7mYkN+VVEnLdya/S6madSU4yW9ET4G3/41INbhk5Np/5/qxoJMqwrfeektVYcr65TcvVazSrkR5z/BtSDq5ipSMISklSVvSv5H6d6nvlqt2OYk6CwR5TdYr9zJJI2v9+vVRq1Yth9PJD1ICpvxQHCU86O0GcmXdpk0bdSJ+6aWXUKNGDZVAIIkLEqTsf9jOkidcoZeCpNTmiLRzSHDKC3LikNLDd999h48++ki160g7g7QFWJNtk8w/afCXYCX7SfaBBDR3r8A95Wwf620WvkJKERKY5OKobt26Xl22s4s9++QZuWiQ9UuJX5JEpF1LLjSk5C0XQDkdr/r3KWnrztLB7dvXrEvQOjkndOzYUd1cvGLFCtVuO3HiRNU+1bBhQ5c+LwV4QNJLSZKFJlc4rpDqsTfeeENdcd6s+xmk2keuoKWKIKftluApJzC5orMuAdiTq1tpoJdGdkn20EnVjDdJNYhUq8gVrSSD2JPGfglYEpD0hm5p9HZ2U7InVT6ybvmc0sAupUTZP9bVdVICkffknhVpBLe/kvZ03ZLVJvcm2du9e7fl/dySq3pJfHG2Hmmsl2pmb5IaBnHhwgWn08h3KckYV69edSsVXkqFjm46ti9NCvlsEhxlmDx5srrIkHusJEjJ8ePsu9KPM0kCyek4c4Us64UXXlCDHC9yfpBkH2c3s5N3+E2VnX4QSSlJ6sJdKWJLtYBk4siBllvupn3r5Mf1wQcfqO2QdjBnpFpFrg7l5Gp/ZS2v9TRm/QrSehr5W0+v9hYpmUhQkrYHCUj2g2RKSXuDVJPIPS8SSKU6yP6kZL2dUpITrvaWICcdqZaUK2gZpOrQugrG0b4Qsh323Fm3ZLJJ5qLcjKqTfSGlc8nCclbKdYdsu7QxStC3bpuUkqBU8cqFjJx4ven//u//1P9SUndGMtCkXUZKUu6U+OS3KdVl1tmj0t4rx1FOmaxCv1iUYymn70oy62Q9ki3qKKjq92vlRKpJ7W+Ml2UWK1bMsn7KO35VQhJyJSVpw3JlKem/OZErWW91VeNu2rc1Sf+WISfyo5DSnKTlyjqkukp+JFLdKD9qaaSWtGKpopNp5W+pppOTlgQGbzfQSulH0p31dFt7kgItqfhS7SLBVHq5kGoQOblII780zsuVvqTXSrWIfkLRS1eSii4nZWlDcEau0GXZkgwiAUFORNbks+ttAHJFX758eVXtI/vMnr5uOX5knbJs2V795GdNqoSljUzSi2VbJShKSU2WK/vaW706yPet35Mj7TvSbiMXW3JilM+UG5LQoV/tS9q2lCRl2+X7lEDojJS6v/zyS5X8IEFZEjRk38vtArKNzo5j2adShSwp8bLP5MQvx4SU9q2TSySlW6rsJLVffp/SNipVsnJPkJ5EIse3JD9IVbf8BuQ7kip4uRiRtiL5XuS3L8eZfOfyO5DSlRwPetB1RmoX5LcsVb1yYSH7XH5fciGQ07FIXqIZlKP0bPt0Zmdp3+4uV08RzSkV1ZO075w4SlsXCxcu1O644w6tSJEiaqhRo4ZKl96zZ49lGkljb926tVa0aFEtKipK69Onj7Z169ZsqbKyn2QZ/5aKay8lJUWlmj/xxBNOp5FU2/DwcK1Lly6WcevWrVOpt5K2LOutV6+e9uGHH1relxTuwYMHa6VKlVIp6tbbYJ9GrPvpp5/UezL9P//8k+39Y8eOqW2IjIzUIiIitIcfflilTjtantwGUL58eZU6bp0Cbp/2LSQV+6GHHlLLLVSokNa0aVOVxu/Kd62nXtunLTuSlJSk0pjlu5T9ec8992jr1693uDxP077lu5TbDeS2A0lfzyntW/9uR44cqVKpQ0JC1C0Usi+s09Md7V+5JaBOnToqlb169eranDlzsh1rq1ev1h588EGtXLlyajr5X1Kz9+7da7OsH374QatVq5badvt9KbccdO3aVbvlllu0sLAw9f098sgjatn/9ptOS0tTvyf5XckxKsdMs2bNtG+//fZf9y3lXpD8463gRkRE5Cm/akMiIiLjYkAiIiKfwIBEREQ+gQGJiIh8AgMSERH5BAYkIiLyCQxIRETkE3ympwZzsvP+2Yi8Ka6c865xiLzpJ7PtAzFv1jkyOHovjMBnAhIRETlnhtnvq8KMsp1EROTnWEIiIjIAk2b2+xO9UbaTiCigmVVfuP6NAYmIyM/bkIyCAYmIyABMAfBgBgYkIiIDMAdAlR2z7IiIyCcwIBERGYAJmseDJxISEhAbG4tChQqpR8TLI+tzcvbsWQwcOBBly5ZFWFiYejz90qVL3Vonq+yIiAzAnI9VdvPmzcPQoUMxbdo0FYymTJmCuLg47NmzB6VLl842/ZUrV9CmTRv13oIFC1C+fHkcOXIEkZGRbq3XZx5hzq6DKL+w6yAyYtdBycfLeTxvdPkTbk0vQahJkyaYOnWqem02mxETE4PBgwfj5Zdfzja9BK5JkyZh9+7dCAkJ8Xg7WWVHRGQA5lwMWVlZOHfunM0g4xyR0s6mTZvQunVry7jg4GD1esOGDQ7n+fHHH9G8eXNVZVemTBnUqVMHEyZMgMlkcuszMiAREfm5iRMnIiIiwmaQcY6kpaWpQCKBxZq8Tk5OdjjPwYMHVVWdzCftRqNGjcK7776LN954w63tZBsSEZEBmHLRhjRixAjVJmRNEg+8Rar0pP3o008/RYECBdCoUSMcP35cVeONGTPG5eUwIBERGYApF639EnxcDUBRUVEqqKSkpNiMl9fR0dEO55HMOmk7kvl0NWvWVCUqqQIMDQ11ad2ssiMi8vM2JHdI8JASzurVq21KQPJa2okcadmyJfbv36+m0+3du1cFKleDkWBAIiIyABOCPB7cJdV706dPx6xZs7Br1y70798fmZmZ6N27t3q/V69eqhpQJ++fOXMGQ4YMUYFoyZIlKqlBkhzcwSo7IiIDMOfjDTrdu3dHamoqRo8erardGjRogOXLl1sSHY4ePaoy73SSEr5ixQo8//zzqFevnroPSYLTSy+95NZ6eR8SBRzeh0RGvA9pzz+e34dUPca9+5BuFpaQiIgMwORB1ZvRMCARERmAiQGJiIh8gVljQCIiIh9gYgmJiIh8gSkA7tLx/09IRESGwBISEZEBmNmGREREvsDENiQiIvIFJs3/W1gYkIiIDMAcAE3+DEhERAZgCoAqO/8PuUREZAgsIRERGYCJbUhEROQLzAFQZceARERkAKYAaGFhQCIiMgATq+yIiMgXmAOghOT/n5CIiAyBJSQiIgMwsS87IiLyBaYAqNBiQCIiMgAzkxqIiMgXmFhCIiIiX2AKgDYk/w+5RERkCCwhEREZgDkAyg8MSEREBsCeGoiIyCeY2bkqERH5AhNLSNklJyfjzz//VP+L6OhoNGvWTP1PRER5w8Q2pBsyMzPRr18/zJ07F0FBQShZsqQaf+bMGWiahh49euCTTz5BeHh4Xm4vERH5KZdD7pAhQ5CYmIglS5bg8uXLSElJUYP8vXTpUvWeTENERN5n1oI8HvwuIC1cuBBffPEF4uLiUKBAAct4+btt27aYMWMGFixYkFfbSUSEQK+yM3k4+F2VndlsRmhoqNP35T2ZhoiIvM8cAEkNLn/CDh06oG/fvti8eXO292Rc//790bFjR29vHxERQUpIQR4PfldCmjp1Kh577DE0atQIJUqUQOnSpdX4U6dO4ezZs6oqT6YhIiLvMwdACcnlgCRBaNmyZdi9ezc2bNhgk/bdvHlz1KhRIy+3k4iI/Jzb9yFJ4GHwISLKXyYDVb15ij01EBEZgJlVdkRE5AtMDEhEROQLzAFQZedWyDWZTFi7dq3KqiMiovwtIZk8HDyRkJCA2NhYFCpUSPVXKr3xOCOdJkiXctaDzOcut7ZU75UhPT3d7RUREZExzJs3D0OHDsWYMWOQlJSE+vXrq1t75DYfZ4oXL46TJ09ahiNHjri9XrdDZ506dXDw4EG3V0RERMboy27y5Mno06cPevfujVq1amHatGmq42zpIs4ZKRXJbUD6UKZMmbwPSG+88QaGDRuGxYsXqyh47tw5m4GIiHyrL7usrKxs52oZ58iVK1ewadMmtG7d2jIuODhYvZZ7UJ25cOECKlasiJiYGDz44IP4+++/8z4gtWvXDlu3bkWnTp1QoUIFdcOsDJGRkep/IiLyrRLSxIkTERERYTPIOEfS0tJUvoB9CUde6x0i2KtevboqPf3www+YM2eO6te0RYsWOHbsWN5m2a1Zs8bdWYiIKJfMuei1e8SIEapNyFpYWBi8RXrrkUEnwahmzZrqGXmvv/563gWkVq1auTsLERHlkikXzzWS4ONqAIqKilIJbPK8O2vy2tUng4eEhKBhw4bYv3+/W9vpUcj97bff0LNnTxUFjx8/rsbNnj0b69at82RxRETkI+RRQtKJ9urVqy3jpApOXluXgnIiVX7bt29H2bJl8zYgyYP6JP2vcOHCKh1QbxjLyMjAhAkT3F0cERH5WJbd0KFDMX36dMyaNQu7du1SjxfKzMxUWXeiV69eqhpQN27cOKxcuVJlYEtckAKLpH0//fTTbq23oCdZdpICKBs0d+5cy/iWLVuq94iIyNh92XXv3h2pqakYPXq0SmRo0KABli9fbkl0OHr0qMq808m9qZImLtNKcpuUsNavX69Sxt0RpGma5s4Mkou+c+dOdQdvsWLFVMZdpUqVVGSUlV++fBmeMCdX82g+InfFlat/szeBAsRP5vleW9aApJ4ez/vRbXNgBG6XkKRRSxqqJCBZk/YjCUzkua++A2bMBdLOADUqAyOHAPVqOp/+3HlgymfAT2uBjPNAuTLAiMFAq9uvv//pnOvvHTwKFAoDGtYBXugH/OfWfPtI5KM6DYjDw8M6oWR0JA5sPYKEZ2dgz0bnDdB3PXQ74sc9iujYUji+LxmfvTwHictuPD36iTEP4+7uLVEq5hZcu3IN+zYdxMxXv8HuRPcatck5T6rejMbtMqAUy4YMGYI///xT3Zl74sQJfPXVV+pmWalnJM8s/Rl4KwEYGA8snA5Urwz0GQacdtJL05WrwFMvAMeTgffHActmA+OGA2WibkyzcSvwWBdg7sfA5+8CV68BTw0DLl7Kt49FPqjVIy3Q7914zBk3H/0bvYSD245g4vKRiCxV3OH0tZpXwytfP4flM35G/9texO8/JGLsdy8itnaMZZpje09i6uDP0bfeC3j+zlFIOZKKN1eMQkSU42WSZ1V2Zg8Ho3C7yk4ml+QFuanq4sWLapykE0pAciff3F6gV9l1fwaoUwMY9dz112YzcM/DQM+uQJ/Hs08/94frpakls4EQF8u5Z84CLR8MwpcfaGgSwLVWgV5l98GGCdj71wEVQIRcWH59dBq+n7oM8976Ptv0I795HoWKhGFUpzdvLGP9eBzYehjv95/ucB3hxQrjh4wv8WLr17D55x0IVN6ssuv7V7zH837aeBaMwO3QKQfvyJEjcebMGezYsQN//PGHavzKTTAKdFLa+Xsv0LzRjXHSXiivtzjpfePn34EGtYHX3wPu6Ax0/C/wyWxJt3S+nvMXrv8fUczLH4AMo2BIQVRrVAlJq7bZXGTK61q3V3NaQkpafWN68dfKrajpZHpZR7u+rXHhbKaqDiTvPX7C7OFgFG4HpCeffBLnz59XueqSxNC0aVMULVpUpQTKe+S+sxkSSIJwi13PS/Ja2pMcOXYSWPErYDIDn7wF9O8FzPwWmDbb8fRS4po4FbitroZqbOoLWBFRxVCgYAGkp2TYjE8/lYES0ZEO55HxZ+2nTzmr2p+sNWt/G348NxtLLn2Fbs91wEttX8e50+fz4FME7o2xJg8Hvw1Ikpd+6VL2RggZ9+WXX7q0DMcd/Znd3ZSAJgHmlkhg3DCgdnWg3b3AMz2vV+U5Mu49YN8h4N3R+b2lFCi2rvkbzzQcjudavoqNK7bg1XlDnbZLkfvMAdCG5PKWStCQm1+leC8lJOtgIjnoS5cuRenSpV1alqOO/t78MHCfsRQZIc+a0rIlMMjrqJKO5yl1C1AxRua7Ma5SRSlRBakqQGuvTwF+3QDMmgJEu/YVkZ/KSDsP0zUTSpSJsBlfonQE0pMdP3hTxkfaT18mEmfspr98MQsnDiRj15/7MPnpj2G+ZsL9T92bB58iMJnz8cZYnw9I0pt3yZIlVRtStWrVLL18yyB9H0l13cCBA11altzhK8HNenh5cOD2FB4aAtSuBvyxybYE9EfS9XYiR26rAxw9fn063eFjEqg0tTwh6SoSjFb9BsycAlRwrxcP8kPXrl7D3k0H0fC+upZx8puW1zv/2Otwnp0b9qLhvTemF7e1roddTqa3LDc4CCFh/zsYKdfMAdCGVNCdXr6ldHTvvfeq7oMkOOmkPUmeg1GuXDmPO/ozXzROsTIvxD8CjJh4PdOubg3gywVSDQp0eeD6+y+NB8qUAob2vf760c7X71ua8AHweDfgyLHr9x317GZbTbdkNTB1PFCkMJB6+vr4YkWv35dEgWnhe4vx4hcDVabdnsT96PJce5VFt2Lm9Z78X/xiENJOnMGMV75Wr7/7YAne/eU1PDS0A/5ckoS7H22Jao0rY0q/T9T7hcLD8NjIrtjw4184fTJdpXp3GhiHqPIlsXa+8+fnEHkckPRevg8dOoRbb71VXVWR90gbUPpZ4IMZ1xMZalYBPp10o8ru5KnrmXe6sqWB6ZOANxOAzk9ev//oiW7A04/dmGbuD9e/o/ghtuua8LJmCXQUeH79dr1q24l/rbtKWDiw5TBeeWA8zp66nrhQ+tYoaGbNpoQ08fH38d/Xe6D3+MdwfN9JjO3yNg7//Y9632QyI6Z6ebRZcDeKRxXD+dPnsWfjATx/12gc2ene83DIOSNVveXbfUjSn5Fk1d1xxx3qdUJCguqETzLu5G9PH9IX6PchUf4J9PuQyJj3IXXf8IzH885rPg1G4HY92fDhwy2PKpfuxaVXWHmKrJSc7B8ARURE3mEOgKQGt/uyk8Cj9+AqbUkdO3ZUPTdIl+MSmIiIyPvMBkpOyLcSkiQw6F0GrVq1Cm3btlV/S5KDXnIiIiLvMrOElJ20HUnVnDz/KDExEfPmzVPj9+7diwoVKuTFNhIRUQBwu4Q0depUFCxYEAsWLMDHH3+M8uXLq/HLli3D/fffnxfbSEQU8MwsIWUnKd+LFy/ONv69997z1jYREZEdIwWWfAtI8ujafwtYRETkXWYGpOzkSbE53RRryun5B0RE5BFzAGTZuR2QNm++8dhicfXqVTVu8uTJGD9+vDe3jYiIAojbAal+/ex3uTdu3Fj1Yzdp0iR07drVW9tGRET/wyo7N1SvXh0bN2701uKIiMgKA5ID9je/Sld4J0+exNixY1G1alVvbhsREf0PA5KT5yLZJzVIUIqJicHcuXO9uW1ERPQ/DEhOnotkLTg4GKVKlUKVKlXUDbNEROR9GgOS8+ciERER5XtA+vHHH11eYKdOnXKzPURE5ADvQ/qfzp07u7QwaVvijbFERN5nZpXddWazOe+3hIiInGIbEhER+QRzAAQklx8/8fPPP6snxTp6CF9GRgZq166NtWvXenv7iIgI10tIng5+F5CmTJmCPn36oHjx4tnei4iIQL9+/fgICiIiyvuAtHXr1hwfwCePMt+0aZPnW0JERE7xAX1WUlJSEBIS4nxBBQsiNTXVW9tFRERWNA1+z+USkjyqfMeOHU7f37ZtG8qWLeut7SIiIrv7kDwd/C4gtWvXDqNGjcLly5ezvXfp0iWMGTMGHTp08Pb2ERERAiOpweUqu1dffRWLFi1CtWrVMGjQIPW4CbF7924kJCSoG2JHjhyZl9tKRBSwzAYKLHkekMqUKYP169ejf//+GDFihOrhW++dIS4uTgUlmYaIiCjPb4ytWLEili5divT0dOzfv18FJXkGUokSJTxaORERuUYLgKQGj3pqkADUpEkT728NERE5ZKS2oDxPaiAiosBJakhISEBsbCwKFSqEZs2aITEx0aX55EGt0pTjaqfc1hiQiIgMwJyPN8bOmzcPQ4cOVdnTSUlJqF+/vsoVOHXqVI7zHT58GMOGDcOdd97p0WdkQCIiMkgbkubh4K7JkyerruJ69+6t+jCdNm0awsPDMWPGDKfzSKb1448/jtdeew2VKlXy6DMyIBERkcWVK1dUN3CtW7e2jAsODlavN2zYAGfGjRuH0qVL46mnnoKn+PgJIiI/T2rIyspSg7WwsDA12EtLS1OlHfvbeOS13HfqyLp16/D5559jy5YtyA2WkIiI/DypYeLEieqpDNaDjPOG8+fP44knnsD06dMRFRWVq2WxhEREZABaLuaVzgwkScGao9KRkKBSoEAB1aG2NXkdHR2dbfoDBw6oZIaOHTtme8q4dLq9Z88eVK5c2aXtZEAiIvLzKrswJ9VzjoSGhqJRo0ZYvXq1JXVbAoy8lm7j7NWoUQPbt2/P1tWclJzef/99xMTEuLydDEhEREag5d+qpDQVHx+Pxo0bo2nTpuoBrZmZmSrrTvTq1Us9AUKq/eQ+pTp16tjMHxkZqf63H/9vGJCIiMhG9+7d1fPtRo8ejeTkZDRo0ADLly+3JDocPXpUZd55W5Cm95J6k5mTq93sTaAAEVeu/s3eBAoQP5nne21ZVee/4fG8+x5+FUbAEhIRkQFoPlF0yFsMSEREBhAInasyIBERGYHGgERERD5AC4AqO/bUQEREPoElJCIiI9Dg9xiQiIgMQGMbEhER+QQNfo8BiYjIADSWkIiIyCdo8HvMsiMiIp/AEhIRkSEEwd8xIBERGYEGv8eARERkBBr8HgMSEZERaKyyIyIiH6AFQAmJWXZEROQTWEIiIjICDX6PAYmIyAg0tiEREZEPCGIJiYiIfIIGv8eARERkBJr/V9kxy46IiHwCS0hEREagwe8xIBERGYEGv8eARERkBBr8HgMSEZERaP6f1MCARERkAEEBUEJilh0REfkElpCIiIxAg99jCYmIiHwCS0hERAYQFAAlJJ8JSA9UaX6zN4ECxL4vat3sTSByn8YsOyIi8gUa/B7bkIiIyCewhEREZAQa/B4DEhGRAQQxIBERkU/Q4PcYkIiIjECD32NAIiIygKAACEjMsiMiIp/AgEREZJQbYzUPBw8kJCQgNjYWhQoVQrNmzZCYmOh02kWLFqFx48aIjIxEkSJF0KBBA8yePdvtdTIgEREZgZaLwU3z5s3D0KFDMWbMGCQlJaF+/fqIi4vDqVOnHE5fsmRJjBw5Ehs2bMC2bdvQu3dvNaxYscKt9TIgEREZpA0pyMPBXZMnT0afPn1UUKlVqxamTZuG8PBwzJgxw+H0d999N7p06YKaNWuicuXKGDJkCOrVq4d169a5tV4GJCIiPy8hZWVl4dy5czaDjHPkypUr2LRpE1q3bm0ZFxwcrF5LCehfN1PTsHr1auzZswd33XWXWx+RAYmIyM9NnDgRERERNoOMcyQtLQ0mkwllypSxGS+vk5OTna4jIyMDRYsWRWhoKNq3b48PP/wQbdq0cWs7mfZNROTnad8jRoxQbULWwsLC4E3FihXDli1bcOHCBVVCkvVVqlRJVee5igGJiMgINM9nleDjagCKiopCgQIFkJKSYjNeXkdHRzudT6r1qlSpov6WLLtdu3apUpg7AYlVdkRERqDlT5adVLk1atRIlXJ0ZrNZvW7e3PXn1sk8ztqpnGEJiYjIAILysacGqW6Lj49X9xY1bdoUU6ZMQWZmpsq6E7169UL58uUt7VDyv0wrGXYShJYuXaruQ/r444/dWi8DEhER2ejevTtSU1MxevRolcggVXDLly+3JDocPXpUVdHpJFgNGDAAx44dQ+HChVGjRg3MmTNHLccdQZrk6PmAuKLxN3sTKEDs+YiPMKf8cbjXS15bVvXX3/N43j2jnocRsIRERGQEGvweAxIRkQEEMSAREZFP0OD3GJCIiIxAg99jQCIiMoCgAAhIvDGWiIh8AktIRERGoMHvMSARERlAEAMSERH5BA1+jwGJiMgINPg9BiQiIgMICoCAxCw7IiLyCSwhEREZgQa/x4BERGQEGvweAxIRkQEEMSAREZFP0OD3GJCIiAwgKAACErPsiIjIJ7CERERkBBr8HgMSEZERaPB7DEhERAYQBP/HgEREZAQa/B4DEhGRAQQFQEBilh0REfkElpCIiIxAg99jQCIiMgINfo8BiYjIAIIYkIiIyCdo8HteS2rIzMzE2rVrvbU4IiKyKyF5OgRcQNq/fz/uueceby2OiIgCDKvsiIiMQIPfczkglSxZMsf3TSaTN7aHiIgcMFLVW54HpKysLPTv3x9169Z1+P6RI0fw2muveXPbiIhIx4B0Q4MGDRATE4P4+HiH72/dupUBiYgor2jwey4HpPbt2+Ps2bM5Vun16tXLW9tFRERWWGVn5ZVXXsnxfSk9zZw50xvbREREAYhZdkRERqDB7zEgEREZQJDm/xGJAYmIyAg0+D0GJCIiAwgKgIDkVtdBcvOr9FeXU7YdERHlAS0XgwcSEhIQGxuLQoUKoVmzZkhMTHQ67fTp03HnnXeiRIkSamjdunWO03slIBUoUABt27ZFenq62ysiIiJjmDdvHoYOHYoxY8YgKSkJ9evXR1xcHE6dOuVw+l9++QU9evTAmjVrsGHDBpV1LbHi+PHjedu5ap06dXDw4EF3ZyMiIoP09j158mT06dMHvXv3Rq1atTBt2jSEh4djxowZDqf/6quvMGDAANWBQo0aNfDZZ5/BbDZj9erVeRuQ3njjDQwbNgyLFy/GyZMnce7cOZuBiIh8q8ouKysr27laxjly5coVbNq0SVW76YKDg9VrKf244uLFi7h69eq/9oGa64DUrl071U1Qp06dUKFCBUudYWRkpPqfiIh8q4Q0ceJERERE2AwyzpG0tDSVL1CmTBmb8fI6OTnZpW196aWXUK5cOZuglidZdlJHSERE+UzzfNYRI0aoNiFrYWFhyAtvvvkm5s6dq9qVJCEiTwNSq1at3J2FiIhuYtp3WFiYywEoKipKJbClpKTYjJfX0dHROc77zjvvqIC0atUq1KtXL3+eGPvbb7+hZ8+eaNGihSWLYvbs2Vi3bp0niyMiIh8RGhqKRo0a2SQk6AkKzZs3dzrf22+/jddffx3Lly9H48aNPVq32wFp4cKFKv2vcOHCKh1QbxjLyMjAhAkTPNoIIiL6F9J1kKeDm6R6T+4tmjVrFnbt2qWehZeZmamy7oQ82UGqAXVvvfUWRo0apbLw5N4laWuS4cKFC3mfZScpgLKxISEhlvEtW7ZUAYqIiIyd9t29e3dV/TZ69GiVyr1lyxZV8tETHY4ePaqyrHUff/yxys576KGHULZsWcsgy8jTNqQ9e/bgrrvuyjZesjbYgwMRUR7R8nd1gwYNUoMjkrBg7fDhw15Zp9sBSRq19u/fr4pl1qT9qFKlSl7ZqEDVse99eGjIAyhZJgIHt/+Dj4bNwZ5Nzm9CvrNLE8SP6ooyt0bh+IEUfD7qW2xcuc3htM++H4/2T92LaS9+he8+WpmHn4KM4InqDdGvdjOUKlwEu86cwpjEVdh6+sYVr7W4W6thYJ3bEVu8BAoGBePw+XRM37kR3x382zLN4V4vOZx3wqY1+PRv97uQoeyCzPB7bgckuXt3yJAhqq4wKCgIJ06cUDdLyc2yUodInmnVrSn6TuyBD4fMwu6/DqDLwDiM/34YnrrtJWSkns82fa1mVTBiZn/MGDMffy7fgnseaY4xc4dg4B2jcWSnbXcdLTo2Qo0mlZF2gl0+EdAhtgZebXwvXv1jJTanncCTNRvjy9aP4N4fpuP05YvZps/IuoSE7Ruw/9wZXDWZcF+FypjUop2adu2JQ2qaJt9OtZnn7vKV8FaLB7DsyJ58+1x+T4Pfc7sN6eWXX8Zjjz2G++67TzVYSfXd008/jX79+mHw4MF5s5UBoOug+7H8i1+xcs5vOLr7BD549gtkXbqCuCeyV4+KzgPa4q+ftmPB+8vwz56T+PL1Rdi/5TAe7Gd7I9otZUtgwDs98dZTn+Da1Wv59GnIlz1dswnm7tuK+Qe2Y3/GaYz8YwUuma7ikSp1HU7/R8o/WPHPPhzIOI2jF85i5u5N2J1+Co1LV7BMk3o502ZoE1MFG5KP4J8LGfn4ySjgApKUikaOHIkzZ85gx44d+OOPP5CamqrS/cgzBUMKoGrDWCStuVEFomkaNq/5G7WaVnE4T82mVdT71jat3qHGW39XL37WFwveX4oju9zr5JD8U0hwMOrcEo3fTx6xufD+/eRh3FaqvEvLaBFdEZWKl0Riyj8O348qFI57KlTGvP2Oq4/J95MaDBOQnnzySZw/f17lqkune02bNkXRokVVSqC8R+4rfksxFChYAGdP2V5Npp/KQIkyEQ7nkfHpqedynP6Roe1humbG9x/9lEdbTkZTIiwcBYODkXYp02Z86qWLKFWoiNP5ioWE4u8ez2Nfz2GYed9DGLNxFdaddNyQ3a1yHWRevYIVR/Z6ffsDmpZ/ad+GCUiSl37p0qVs42Xcl19+6dIyHHX0Z9ZM7m4K5aBKg1h0HtAG7/SbfrM3hfzAhatX0G7xTDy45EtM2rwWoxrfi9vLxDic9pEq9fD9oZ3IMvM37U1BAVBCcjmpQYKGVCPJICUk6z6KpCO+pUuXonTp0i4tSzr1e+2112zGVQqphyqhDRCIzp0+D9M1EyJL25aGSpSOQHqK4zp4GV+iVHGn09dtUQ2RpYpjzu7JlvelFNZnYg90HtgW8bWH5clnId+WnnUR18xmRBW2LQ2VKhyu2n6ckXPakfPXb+vYmX4KVSJuwYC6zVX7krUmpSugcsQtGLT2hzz6BAFMg99zOSBJb97SJiFDtWrVsr0v4+2DjDsd/XUrOwCB6tpVE/ZtPoyGd9fChsVJlv3Z4O5a+PGTVQ7n2ZW4X71vncJ92z211Xixau7vSPrFto1pwvfDsfqb31XiBAWmq2YzdpxORouyFbHyn31qXJBqF4rFl3s2ubyc4KAghAYXyDa+e5V62JZ2ErvSU7263QRDlXTyPCBJL99SOrr33ntV90HWz7mQ9qSKFSuq7sY97egvOCj7wR1IFk1djmGf9MHepEPq3iNJ+y4UHmYJHsM/7avStmeOna9ef//RSkxaPgLdBt+PxBVb0eqhZqh6238w5dmZ6v3zZzLVYE2y7KQEdWyfa13Ik3/6bNdGvNuyPbanJWPL6ZN4qmZjhBcMwfz929X78l7KxfN4e/Na9XpAndux7XQyjpxPR2iBgrinfCV0qVRbpY1bKxoSinYVq2P8Jj4RgPI4IOm9fB86dAi33nqruoIn7/l1YSIiooqj16tdVWLCwW1HMbLLOzh76nriQqmYkqqDQ93OP/fjzSenIX5UN/x37EM4cSAFrz36frZ7kIjsLT68GyXDwvF8gzssN8bGr/4Waf+7B6l8keLq4lNXuGAIXm/WBmXDi+Gy6RoOZJzB8+sWq+VY6xhbU50Xfjy0M98/U0DQ/L+IFKRZH3kukP6MJKvujjvuUK8TEhJUv3aScSd/e/qQvrii8R7NR+SuPR/VutmbQAHCWQ8WnrjrwUkez7v2h+Hwyyy74cOHWx5Vvn37dtUWJE+RlZKTfbsQERHd/EeY+23XQRJ4pDQkpC2pY8eO6rET0tO3BCYiIvK+IAMFlnwrIUkCw8WL1+ua5amAbdu2VX9LkoNeciIiIi8za54P/lpCkrYjqZqT5x8lJiZi3rx5avzevXtRocKNvq2IiIjytIQ0depUFCxYEAsWLFAPZSpf/nr/V8uWLcP999/v7uKIiMgVGtuQspGU78WLF2cb/95773lrm4iIKADbkNwOSPLo2n8LWERE5GWa/0cktwOSPCk2p5tipV87IiLyriD/j0fuB6TNmzfbvL569aoaN3nyZIwfP96b20ZERAHE7YBUv379bOMaN26s+rGbNGkSunbt6q1tIyIiHUtIrqtevTo2btzorcUREZGVILYhZWd/86t0hXfy5EmMHTsWVatW9ea2ERGR7kbfyn7L7YCkPxfJPijFxMRg7ty53tw2IiL6H5aQnDwXyVpwcDBKlSqFKlWqqBtmiYgoD2jwe25HEP25SERERPkekH788UeXF9ipU6fcbA8RETnCKrvrOnfu7NLCpG2JN8YSEXlfkP/HI9cCkvWjs4mI6CbQ/D8iMQuBiMgAggKgXODy4yd+/vln9aRYRw/hy8jIQO3atbF27Vpvbx8REeklJE8HfwtIU6ZMQZ8+fVC8ePFs70VERKBfv358BAUREeV9QNq6dWuOD+CTR5lv2rTJ8y0hIiLn+IC+G1JSUhASEuJ8QQULIjU11VvbRUREAdZTg8slJHlU+Y4dO5y+v23bNpQtW9Zb20VERNbYhnRDu3btMGrUKFy+fDnbe5cuXcKYMWPQoUMHb28fEREJcy4Gf6uye/XVV7Fo0SJUq1YNgwYNUo+bELt370ZCQoK6IXbkyJF5ua1ERAEryEAlnTwPSGXKlMH69evRv39/jBgxQvXwrffOEBcXp4KSTENERJTnN8ZWrFgRS5cuRXp6Ovbv36+CkjwDqUSJEh6tnIiIXKSxhOSQBKAmTZp4f2uIiChgA5LLSQ1ERBQ4SQ0JCQmIjY1FoUKF0KxZMyQmJjqd9u+//0a3bt3U9NKMIx0peIIBiYjIIEkNQR4O7po3bx6GDh2qsqeTkpJQv359lStw6tQph9NfvHgRlSpVwptvvono6GiPPyMDEhGREWj5dx/S5MmTVVdxvXv3Vn2YTps2DeHh4ZgxY4bD6aUJZ9KkSXj00UcRFhbm8UdkQCIiIosrV66obuBat25tGRccHKxeb9iwAXmJj58gIvLzpIasrCw1WJOSjKPSTFpamrqv1P42Hnkt953mJZaQiIj8vMpu4sSJ6qkM1oOM8zUsIRERGYHZ81mlMwNJUrDmrK0nKioKBQoUUB1qW5PXuUlYcAVLSEREfp5lFxYWpp5lZz04C0ihoaFo1KgRVq9ebRlnNpvV6+bNm+fpZ2QJiYjICLT8uzFWSlPx8fFo3LgxmjZtqu4ryszMVFl3olevXuoJEHq1nyRC7Ny50/L38ePHsWXLFhQtWhRVqlRxeb0MSEREZKN79+7q+XajR49GcnIyGjRogOXLl1sSHY4ePaoy73QnTpxAw4YNLa/feecdNbRq1Qq//PILXMWARERkBOb87TpInuoggyP2QUZ6aNA73M4NBiQiIiPQ/L8vOwYkIiIj0BiQiIjIF2gMSEREFIBtSDcD70MiIiKfwBISEZERaLnoqsEgGJCIiIxA8/8qOwYkIiIjMDMgERGRL9AYkIiIyBdo/h+QmGVHREQ+gSUkIiIj0Py/hMSARERkBGamfRMRkS/QWEIiIiJfoDEgERGRLzD7f0Bilh0REfkElpCIiAxAY192RETkE8z+X2XHgEREZAQaAxIREfkCM6vsiIjIF2j+X0Jilh0REfkElpCIiAxAY5UdERH5BM3/q+wYkIiIjMDMgERERL5AY5UdERH5AC0ASkjMsiMiIp/AEhIRkRForLIjIiIfoAVAlR0DEhGREWj+X0IK0rQASG73Q1lZWZg4cSJGjBiBsLCwm7055Md4rFF+YUAyqHPnziEiIgIZGRkoXrz4zd4c8mM81ii/MMuOiIh8AgMSERH5BAYkIiLyCQxIBiWNy2PGjGEjM+U5HmuUX5jUQEREPoElJCIi8gkMSERE5BMYkIiIyCcwIOWjoKAgfP/99zd7MygA8FgjI2JA8pLk5GQMHjwYlSpVUtlIMTEx6NixI1avXp0n6/vll1/USefs2bPIK2fOnMHjjz+u7s6PjIzEU089hQsXLuTZ+ihwj7Xx48ejRYsWCA8PV8caBSZ2ruoFhw8fRsuWLdUPadKkSahbty6uXr2KFStWYODAgdi9ezd8lSRZmkwmFCyY/VCQYHTy5En89NNP6vP07t0bffv2xddff31TtpX891i7cuUKHn74YTRv3hyff/75Tdk+8gGS9k2588ADD2jly5fXLly4kO299PR0y9+yu7/77jv195o1a9Rr6/c3b96sxh06dEi9Pnz4sNahQwctMjJSCw8P12rVqqUtWbJEvS/TWQ/x8fFqHpPJpE2YMEGLjY3VChUqpNWrV0+bP3++ZR36epcuXarddtttWkhIiBpnb+fOnWq6jRs3WsYtW7ZMCwoK0o4fP+61fUfu8cdjzdrMmTO1iIgIL+wpMiKWkLxQrbV8+XJV5VCkSJFs7+em+kGueOXKce3atWrZO3fuRNGiRVUVzcKFC9GtWzfs2bNHVakVLlxYzSO9Ms+ZMwfTpk1D1apV1bw9e/ZEqVKl0KpVK8uyX375Zbzzzjuq2qdEiRLZ1r1hwwa17Y0bN7aMa926NYKDg/Hnn3+iS5cuHn8u8oy/HmtEOgakXNq/f7+qiqhRo4bXl3306FF1IpBqGSE/aF3JkiXV/6VLl7aciOQxARMmTMCqVatU1Yc+z7p16/DJJ5/YnCTGjRuHNm3a5NhOIcu2JlUtsl55j/Kfvx5rRDoGpFzKy44unn32WfTv3x8rV65UpRM5YdSrVy/HE9bFixez/fjlyrdhw4Y246xLPmQMPNbI3zEg5ZJUVUgGkruNyVL1ZX+SkcZpa08//TTi4uKwZMkSdaKQKpJ3331XZVg5omfAyfTly5e3ec++HzJHVT7WoqOjcerUKZtx165dU9VG8h7lP3891oh0TPvOJanOkB9yQkICMjMzs73vLFVW6tmFZLHptmzZkm06qcN/5plnsGjRIrzwwguYPn26Gh8aGqr+l6wlXa1atdTJQKpfqlSpYjPIctwh1TCy7Zs2bbKM+/nnn2E2m9GsWTO3lkXe4a/HGpGOAckL5AQhP9amTZuqBuB9+/Zh165d+OCDDyz16/b0H+7YsWPV9HKlKVek1p577jmVznvo0CEkJSVhzZo1qFmzpnqvYsWK6mp58eLFSE1NVVesxYoVw7Bhw/D8889j1qxZOHDggJrvww8/VK/dIeu5//770adPHyQmJuL333/HoEGD8Oijj6JcuXK52FuUG/54rAkJbBIk5X/5fPK3DLzvLcDc7DQ/f3HixAlt4MCBWsWKFbXQ0FCVmtupUyebNFfrVFyxbt06rW7duipl9s4771Qps9apuIMGDdIqV66shYWFaaVKldKeeOIJLS0tzTL/uHHjtOjoaJWKrafims1mbcqUKVr16tVVmq3MFxcXp/36669OU4CdOX36tNajRw+taNGiWvHixbXevXtr58+f9+p+I/f547Emy7RPL5fh39LEyb/w8RNEROQTWGVHREQ+gQGJiIh8AgMSERH5BAYkIiLyCQxIRETkExiQiIjIJzAgERGRT2BAIiIin8CAREREPoEBiYiIfAIDEhER+QQGJCIigi/4fwo3He/1BzMVAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NMF Bicluster Mean Activations:\n",
      " [[0.625      0.025     ]\n",
      " [0.04166667 0.36666667]]\n"
     ]
    }
   ],
   "source": [
    "# 1. Get the \"hard\" cluster assignments from the soft NMF results\n",
    "nmf_row_labels = np.argmax(W, axis=1)\n",
    "nmf_col_labels = np.argmax(H, axis=0)\n",
    "\n",
    "# 2. Reorder the original matrix based on these cluster assignments\n",
    "# This is crucial: we analyze the original data, just reordered.\n",
    "row_order = np.argsort(nmf_row_labels)\n",
    "col_order = np.argsort(nmf_col_labels)\n",
    "X_reordered = X[row_order][:, col_order]\n",
    "\n",
    "# 3. Calculate the boundaries of the clusters in the reordered matrix\n",
    "# np.bincount will count occurrences of each label (0, 1, 2...)\n",
    "# It's important to ensure all clusters are represented, even if one is empty\n",
    "row_cluster_sizes = np.bincount(nmf_row_labels, minlength=k)\n",
    "col_cluster_sizes = np.bincount(nmf_col_labels, minlength=k)\n",
    "\n",
    "# Cumulative sums give us the slice indices\n",
    "row_boundaries = np.insert(np.cumsum(row_cluster_sizes), 0, 0)\n",
    "col_boundaries = np.insert(np.cumsum(col_cluster_sizes), 0, 0)\n",
    "\n",
    "# 4. Calculate the mean activation for each block\n",
    "bicluster_means_nmf = np.zeros((k, k))\n",
    "\n",
    "for i in range(k): # Row cluster index (Component i)\n",
    "    for j in range(k): # Column cluster index (Component j)\n",
    "\n",
    "        # Get the slice for this block from the reordered matrix\n",
    "        row_start, row_end = row_boundaries[i], row_boundaries[i+1]\n",
    "        col_start, col_end = col_boundaries[j], col_boundaries[j+1]\n",
    "\n",
    "        block = X_reordered[row_start:row_end, col_start:col_end]\n",
    "\n",
    "        # Avoid division by zero if a cluster happens to be empty\n",
    "        if block.size > 0:\n",
    "            bicluster_means_nmf[i, j] = block.mean()\n",
    "\n",
    "# 5. Visualize the result\n",
    "plt.figure(figsize=(5, 4))\n",
    "sns.heatmap(bicluster_means_nmf, annot=True, cmap='viridis', fmt='.2f',\n",
    "            xticklabels=[f'Cluster {i}' for i in range(k)],\n",
    "            yticklabels=[f'Cluster {i}' for i in range(k)])\n",
    "plt.title(\"NMF: Mean Activation of Biclusters\")\n",
    "plt.show()\n",
    "\n",
    "print(\"NMF Bicluster Mean Activations:\\n\", bicluster_means_nmf)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc8c767e",
   "metadata": {},
   "source": [
    "## Comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e6019081",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjtlJREFUeJzt3QeYE+X6//97l7L0BZQiXQUFFaWJIhY4KB4riL2hgtgLdj0WsKJiO3ZsYC+o2LEhHBUrgmJBsdCRIm3pbfO/Ps/3P/mFJdnNZndnksz7dV3DhmQmUzKZuXPPPc+TE4lEIgYAAAAAAAD4KNfPmQEAAAAAAABCUgoAAAAAAAC+IykFAAAAAAAA35GUAgAAAAAAgO9ISgEAAAAAAMB3JKUAAAAAAADgO5JSAAAAAAAA8B1JKQAAAAAAAPiOpBQAAAAAAAB8R1IKQIlmzpxpOTk5bhg1alSFzadHjx5uHvqbzrQNvO2hbYPSYfsBAMJs6NCh0fMgwhE7piP2Q6QLklJAhlmxYoU99NBDduihh1qrVq2sRo0alp+fbzvttJOdfPLJ9vLLL9vmzZuDXkyU4PTTT48GAhoGDBiQ1HTPP//8FtNpHwAAwLN69Wp79NFHXZzQtGlTq1atmuXl5VmDBg1szz33dOebxx9/3ObMmRP0oqIcTZs2zW688Ubbf//9rXnz5la9enWrVauWtWzZ0o444gi75557bMGCBZaOxo8fb4MHD7ZOnTpZ48aNrWrVqla3bl1r27ati22fe+45W7NmTdCLCaCCkJQCMoiCyB133NEuuOACGzt2rM2aNcvWrl1rBQUF9vvvv9sLL7xgJ5xwgu2+++72+eefB724KIXXXnvN1q1bV+J4zz77rPmFq48AkFm+/PJL22WXXezcc891ccL8+fNt/fr1tmHDBvvnn39s0qRJNnLkSDvrrLNcgiqb6aKNzmG6CJTNli5dav3797fddtvNVb589tlnNnfuXBdTKEE5e/Zse+edd+yyyy5zySrtG5omHUydOtX2228/+9e//mX//e9/bcqUKbZw4ULbuHGjuwj722+/udj21FNPtWbNmtndd99thYWFlknCsh8CZVG5TFMD8M3ll1/uTsZSuXJll3w68sgj3RUwBZveifuTTz6xX375xQ488EB3ZemYY44plxNqJBKxijZhwgQLI13FVmLxzTfftOOPPz7heLrC+fHHH0enSSaJlY4UmBGcAUD5mj59uh188MG2cuVK93/FCIoBVEmtyhMlpX744Qf76KOPXGUKMt9ff/1lhxxyiPvspWHDhnbSSSe5aqntttvOJUOUmFR8pYtf8+bNc1V02k/69u0b6LIraXrcccfZqlWr3P933XVXFwMpWaqqPiXUdPH1/ffft7feesuWLVvmYuGBAwe6KiqUnZKYGoCgkZQCMsDDDz8cTUjpStHbb79tHTp02GKcfffd152olZg644wz3JXRU045xVq3br3VuEgv+uHwyiuvuCqo4pJS+mx1a2aTJk1cxZyuhgIAINdee200IaVqqHjJ/4MOOsj9sF+8eLE77yBz6XY23ZbnJaQUA957771Wu3btrcY96qijbPjw4S4hpf0kaD///LNLmGoddKH1vvvucxVcublb38SjKintr7o1Uc1XAMg+3L4HpDldJVLJtdSsWdPGjRtXbJJJV8ieeuop91iJKZ3M/ahyQupUdi8ffPCBLVq0qMRb99S+QrzADQAQTrpg8e6777rHXbp0KbEaVZUo559/vk9Lh4pwzTXXuMp4OfPMM+2JJ56Im5DyqFruoosusq+++srdxhcUxaSKY7w2opRA1b5YXFyj/fXBBx+0V1991apUqeLj0gLwA79qgDSnq0febVo33HCDK8MviU72//73v93jn376ybUlUFJ7QWqTSm1VtWnTxjWeHtszWrK97y1ZssSuvPJK23nnnV0Dm40aNXJXZceMGZNUr2vFtWEUbxl0C4KuEqpRTDXiuv3227srbWpLoTjaJrfccosrX1flmaZVY6Ba99NOO80FbH7Scijg2rRpk7300ksJl/n77793j5VoLIlu6VRFnT5TlcLXq1fPBXLbbLON7bXXXq5cW7dyFNcI+//+9z/3f/2NbVw9XgPr3vNeGbhuIz322GNd4Kv5xo5f3H6gdk6810aPHp1w/VTK742nzwwAwkyVJGpjUlQhXZ5t4Hz77bd24oknuuO5bh3XX1Vk//rrr0m93x9//GGXXHKJtW/f3nXMovhghx12cO+vNq6SoXPFVVddZZ07d3bnMZ1Xtt12W9cekc47uo2taCyhi3ry9NNPb3UOi40z4sUXr7/+umsoXpXJquQpGpcoTrjuuuvc817D3HXq1Im25+Uliyry81Y7o6Lb9BQrJku3yWk7xqNb6W6/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+ebk5IRmXYFsEbbvUBDHqSCF7fMNyzYuKCiw/Px8ywSZspyZKkwxX5CCWl+O4QCQOiqlAAAAAAAA4DuSUgAAAAAAAPAdSSkAAAAAAAD4jqQUAAAAAAAAfEdSCgAAAAAAAL4jKQUAAAAAAADfkZQCAAAAAACA70hKAQAAAAAAwHckpQAAAAAAAOA7klIAAAAAAADwHUkpAAAAAAAA+I6kFAAAAAAAAHxHUgoAAAAAAAC+IykFAAAAAAAA32VMUmrNmjU2duxYu+WWW6xfv37WsmVLy8nJccPQoUODXjwAAIAKM3nyZLvxxhvtyCOPtLZt29o222xjVapUcX+7d+9ut956qy1dujToxQQAACiVypYhvvnmGzv00EODXgwAAADfPfXUU/bQQw9F/1+tWjWrXr26S0R98cUXbrjvvvvsrbfesm7dugW6rAAAAFlXKSX16tWzXr162RVXXGEvvviiNW7cOOhFAgAAqHBdu3a14cOH25dffmnLli2ztWvXWkFBga1cudKefvppa9Cggf3zzz/Wt29fW7FiRdCLCwAAkF2VUvvtt99WZelXX311YMsDAADgl/79+8d9vlatWu41Xag7+OCDbdGiRfbOO+/YySef7PsyAgAAZG2lVKVKlYJeBAAAgLS09957Rx/PnTs30GUBAADIuqQUAAAA4vvss8+ij3fcccdAlwUAACDrbt8DAADA/7N+/Xr7+++/3e16N9xwg3uudevWdsQRRwS9aAAAAEkhKQUAAJBB1POeElJFde/e3V544QXLy8sLZLkAAABKK3RJKQVxsYGceq4BAADIFGrUfN26dbZq1SpbvXq1e65nz5525513WosWLYqdljgIAACkk9C1KTVs2DDLz8+PDs2bNw96kQAAAJI2c+ZMW7BggUtKLVy40O666y77/vvvrWvXrtHb+BIhDgIAAOkkdEmpa665xlasWBEd5syZE/QiAQAApKRhw4Z22WWX2fvvv285OTl28803uzamEiEOAgAA6SR0SSm1s1CnTp0tBgAAgEymKql9993XPX7ssccSjkccBAAA0knoklIAAADZqGnTpu7vH3/8EfSiAAAAJIWkFAAAQBb466+/3N/atWsHvSgAAABJISkFAACQxjZv3myRSKTYccaNG2fffPONe9yjRw+flgwAACBESally5bZP//8Ex0KCwvd82vWrNniefVG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S0SpvSoN9913n2t4nUbVAQBAtsnNzbUGDRokfD0vL8/X5QEAAAgkKbV+/XqXEFLCKRlr1qxxSaSy6Nq1q7Vq1cr23XdfVymlRJesWrXKXn/9dbv88stt8eLF1rdvX1eVlZ+fX6b5AQAApJPmzZvbzJkzg14MAACAYJNSjRo1cr3vqfrJSw4l8vPPP9vatWttl112sbLo379/3OfVlpVea9y4sR188MG2aNEie+edd+zkk08u0/wAAAAAAACQZm1KqVpJXn755RLHvfPOO107Bz179rSKtPfee0cfz507t0LnBQAAAAAAgACSUuedd55FIhEbOnSo/fTTT3HH2bBhg11zzTX27LPPuqTUueeeaxXps88+iz7ecccdK3ReAAAAAAAACCAptc8++9iFF15oCxcudBVKxxxzjGvbSf7zn/+4W+fU7oGqpOS6664r8+17idq2UtsKDz74oJ166qnuudatW9sRRxxR7vMCAAAIktrO7Ny5s2u6QG177rDDDnbKKafYhAkTgl40AACAUsuJqNwpRZr0hhtusNtvv902b978f2+Yk7PF65UrV7brr7/eDeVJjaYrIVWUegN84YUXrEWLFnGn0zSx0xUUFLjkWRDKsOmRpNj9MQyfbdjWFxWPfQrZIqh9WVasWGF16tQp03uMGjXKzjjjjOj/69WrZ6tXr3ZV6R69/thjj7nYK5F0ioPCJGxxQVDCdu4I4vMN2zYGkDrFGOp8rqQ4KOVKKe9AePPNN9sff/xhQ4YMsQMPPNDatWtnO+20k+2///6uYurXX38t94SUqFFzNbZes2bN6HNqs+q+++5LmJCSYcOGuQ3jDQRiAAAg3TVp0sTFWj/88IOtW7fOli5d6no2njhxoou/ZOTIkXbJJZcU+z7EQQAAIGsqpdKFettTu1W33nqr6w1QtwredNNNaX+FMAs2fdoLW5VH2NYXFY99Ctki0yulilNYWGj9+vWzN99803Jzc90FwTZt2qR9HBQmYYsLghK2cweVUgCyoVIqK5JSnm+++ca6devmgrO3337bDj/88KQ3VBCyaNOnrbD9oA7b+qLisU8hW2RzUkpUte4lou6++2679NJLk5ouyDgoTMIWFwQlbOcOklIALOy376Wbrl272r777useq00FAACAMFAnL9tuu617/NdffwW9OAAAAElJ3BJmjES3wqVCDaNXpKZNm0avGAIAAAAAACCDk1JDhw4tc3moSj31HhWdlPKuDtauXbtC5wMAAJAu/vzzT/vnn3/c4+233z7oxQEAACi/pJR60kuUlPr+++/dPYJelVKzZs3c43nz5tncuXPd47p169oee+xhZbF582bXeGdxybFx48a5dqWkR48eZZofAABAOvAu7BX3+hVXXOEeK1ZKpk1NAACAdJBUm1ITJkyw8ePHbzXsvffeLiF14okn2m+//WZz5syxL7/80g2zZ8+26dOn28knn+x6xFMD5JomVXrvjh072ogRI1w1VGwje3rt9ttvtz59+rjn69evX2KXyAAAAJlg1qxZrt3MojGQOnb56quv7JBDDrExY8a4584++2zbeeedA15iAACAcqyUiue1116zO++808477zx78MEHEza6+eyzz7oW1++44w7r0qWL67I4VT/88IOdc8457nHVqlVdC+5r16611atXR8dRybqWrXHjxinPBwAAIJ18++23bpC8vDzXTMHKlStt/fr10XHOOOMMu//++wNcSgAAgNLJiaTYr2fPnj3ts88+swULFkR7e0lEbRw0atTIDjjgAPvkk09SmZ1t2LDB3nrrLVe19fXXX9v8+fPd+1aqVMkaNGjgbg9UpdRJJ51k1atXT/p9g+wKmS5VK17YurMP2/qi4rFPIVsEtS9LSV0hl0QX4J588klXia5mExYvXmzLli2zatWquWYT9tlnHxswYIB179691O8dZBwUJmGLC4IStnNHEJ9v2LYxgNR5MUZJcVDKSaltttnG/V2yZEmFjO8XklLZLWw/qMO2vqh47FPIFpmclKpIJKX8Eba4IChhO3eQlAKQDUmppNqUikfl4prJqlWrShxX42jc2BJzAAAAAAAAhFfKSSk1oqkGNhO1JxVL46j3PBreBAAAAAAAQJmSUqeffror37zuuuvsxhtvjFsxtWbNGrvpppvcOCovVQOcAAAAAAAAQMptSqlK6tBDD7UPP/zQJZzUuLh612vatKl7fd68eTZp0iTXOKdmcdBBB9nYsWMtNzflPFiFoE2p7Ba29nDCtr6oeOxTyBa0KRUfbUr5I2xxQVDCdu6gTSkA2dCmVOVUZ6DkknrDu/rqq93teaqK+vTTT6MHR++Apd7xzj//fLvjjjvSLiEFAAAAAACADKuUivX333/bq6++6iqjFi1a5J5r2LChq5w6+uijrUmTJpauqJTKbmGr8gjb+qLisU8hW1ApFR+VUv4IW1wQlLCdO6iUAhDqSqlY2223nV144YXl8VYAAAAAAAAIAe6nAwAAAAAAgO9ISgEAAAAAAMB3Zb59788//7RXXnnFpk6dakuXLrWNGzcWe9/zuHHjyjpLAAAAAAAAhDkpdeONN9ott9xihYWFSTV6F7bGFgEAAAAAAFDOSannn3/eJaVEvesdfPDB7m/lyuXSdjoAAAAAAACyWMoZpIceesj9PfLII93te1WrVi3P5QIAAAAAAEAWSzkp9dNPP7nb8R5++GESUkhbydxWWhG4VRUA0ksQ54OCggLLz8+3TLBixQqrU6dO0IuBLImDAJRN2H5LcKwKt9yyfFEUvOiWPQAAAAAAAMCXpFTbtm1tzZo1tn79+lTfAgAAAAAAACGVclLqzDPPtI0bN9ro0aPLd4kAAAAAAACQ9VJOSg0aNMg1cn7RRRfZp59+Wr5LBQAAAAAAgKyWckPnN910k+2xxx722WefWc+ePa179+621157We3atYud7oYbbkh1lgAAAAAAAMgSOZEUm7rPzc2N9grgvUUyvQRs3rzZ0kmQPePQy0D2oscMZIug9mX2KWQDL8ZI557tMmEZAaTPOZrzsz/4LYFskGyMkXKl1P777x+6LwsAAAAAAADKR8pJqQkTJpTTIgAAAAAAACBsUm7oHAAAAAAAAEgVSSkAAAAAAAD4jqQUAAAAAAAA0rdNqZtuuqlcZnjDDTeUy/sAAAAAAAAgc+VEkux/MTc3t1x629u8eXOZ36M8ed0UBoGuL7NX2HqmZF/OXkHty+xTCFNXyEHKhGUEkD7naM7P/uC3BLJBsjFGqXrfY2cBAAAAAACAr21KFRYWlstQ3m6//XaXSfYGAACAbLVy5UobOnSotW/f3mrVquWuQO655552991324YNG4JePAAAgFIpVaVUuvntt9/sxhtvDHoxAAAAKtysWbOsR48eNnPmTPf/GjVq2Pr1623SpElueP75523cuHFWr169oBcVAAAgu3vfU9XVgAEDbN26ddatW7egFwcAAKDCbNq0yY444giXkNpuu+3so48+stWrV9uaNWvspZdestq1a9uUKVPslFNOCXpRAQAAsj8p9cADD9gXX3xhJ598svXu3TvoxQEAAKgwTz/9tP3444/u8WuvvWYHHnhgtCOa448/3kaMGOH+/95777lqKQAAgEyQkUmpGTNm2LXXXmvbbLON3XvvvUEvDgAAQIUnpaRnz55xK8RPOOEE23777d3jZ555xvflAwAACE1SatCgQa5k/Z577rEGDRoEvTgAAAAVRrfoTZw40T0+5JBD4o6jzl7+/e9/u8cffvihr8sHAAAQmqTU448/7srSVbbev3//oBcHAACgQk2bNi3ag/Fuu+2WcDzvtQULFtjSpUt9Wz4AAIBQ9L43b948u+KKK6x69erRthNKS73UaPAUFBSU4xICAACUr/nz50cfN23aNOF4sa9pmvr16281DnEQAABIJxlVKXX22WfbihUrbOjQobbDDjuk9B7Dhg2z/Pz86NC8efNyX04AAIDysnLlyujjGjVqJBwv9rXYaWIRBwEAgHSSMUmp5557zt59913r0KGDXXrppSm/zzXXXOMSW94wZ86ccl1OAACAdEUcBAAA0klG3L63cOFCGzx4sFWqVMm1KVW5cuqLnZeX5wYAAIBMULt27S0aPU8k9rXYaWIRBwEAgKyslIpEIvbPP//Y7NmzrbxdffXVtmTJEjvrrLOsbdu2tmrVqi2GDRs2RMeN9xwAAECmatKkyRbtayYS+1rsNAAAAFmblJo8ebL169fPtUvQqFGjrdp6WrZsmWsL6pxzzrG1a9emNI8ZM2a4v4888oi78ld0UPsIHu+5K6+8soxrBgAAELx27dpZbu7/hWw//fRTwvG81xo3bhy3kXMAAICsSko9++yz1q1bN3vjjTdcdZKqpTTEqlevnv3555/utrs333yzrMsLAAAQKmrAvHv37u7x+++/H3ccxV8ffPCBe9y7d29flw8AAMD3pNQvv/xigwYNso0bN9pFF11kkyZNsm233TbuuKeddpoLlsaOHZvSvCZMmBBNeMUbhgwZEh3Xe+6+++5LddUAAADSimIpGT9+vH399ddbvT569Gj766+/3OP+/fv7vnwAAAC+JqXuuece127T+eef7xJAnTp1cg2Rx9OrVy/397vvvkt1dgAAAKFOSrVv395deDv66KNt3Lhx7vnCwkKXkNKFQjnkkEOicRcAAEC6S7kbO12py8nJsauuuqrEcdXYZvXq1el2GAAAIAXqefitt96ynj172syZM+3AAw90t/UpKbVu3To3TseOHe35558PelEBAAAqvlJq/vz5VrNmTWvWrFlS4ytwSrWhcwAAgLBr1aqVTZ061W644Qbbbbfd3MXBKlWqWOfOne2uu+6yr776yrXlCQAAkClyIkVbJk9S3bp13ZU5JZoUFMl2221nixYtss2bN28x7vr1661WrVouUNLr6aSgoMD1HBiEFDc9MoD3nQgL9uXsFdS+zD6FbODFGCtWrLA6depYOsqEZQSQPudozs/+4LcEskGyMUbKlVI77LCDa+R8+vTpJY6r3mCUqNp1111TnR0AAAAAAACySMpJqUMPPTSpXu5WrlxpV199tcv2HnnkkanODgAAAAAAAFkk5aTU4MGDXSnWY489Ztdff70tX758i9d1W9/rr79uXbt2tV9//dUaN25sZ511VnksMwAAAAAAAMKalNp2221dF8TVqlWz2267zRo1amT//PNPtLc9JayOPfZY++2331x7Uq+++qprGB0AAAAAAABIOSkl6o5YPb306NHDtS+ldqN0S9+CBQts06ZN7rFe+/LLL61bt27lt9QAAAAAAADIaJXL+gbt27e3cePG2axZs2zixIk2f/58l5zS7Xrdu3e31q1bl8+SAgAAAAAAIGuUOSnladmypRsAAAAAAACACr19DwAAAAAAAAisUkptSL322ms2adIkW7RokXuuYcOG1qVLFzv66KPdrXwAAAAAAABAuSSl1Lj5NddcYw888IBr2FzUuLnk5OTYM888Y5deeqldcMEFNmzYMKtatWpZZgcAAAAAAICwJ6UKCwutT58+9sEHH7hEVPXq1a1z587WtGlT9/q8efPsu+++s7Vr19p9991nP//8s40dO9YlqwAAAAAAABBuKbcp9cgjj9j777/vHl933XXuFr5PP/3UXnzxRTfo8cKFC+2GG25w43z00Uf28MMPl9+SAwAAAAAAIHyVUiNHjnRVTzfffLP95z//iTtOrVq1bOjQoe62PSWunnrqKTv//PPLsrxARvBuY/Vb2CoRw7S+Qe1TQLYI0/ECQDgQG2TvuSNsn22YztFh+2yTkRNJcaso4bR+/XpbtmyZe1ycVatWWb169SwvL889TicFBQWWn58fyLzZIVHewnbi5ARW8cK2TyF7BXm8WLFihdWpU8fSkRcHpfMyAkBQiIP8QUyfnZKNMVKulFKCqVq1aiUmpETjEOgAAAAAAACgzG1K7bbbbrZ8+XJbsmRJieNqHI3bvn37VGcHAAAAAACALJJyUkptQ6kHPrUpVRKNozI12pMCAAAAAABAmW7fO+6442zy5Mk2fPhwd4/g9ddfbzvssMMW48yYMcMlpJ5++mm76qqr7Nhjj2WrAwAAAAAAIPWGzv/1r3+5v1OmTHENWEnz5s2tadOm7vG8efNszpw57rEat+rQoUP8BcjJsXHjxllQaOgc2SRsjTHSKGLFC9s+hexFQ+fx0dA5ACRGHOQPYvrslGyMkXJSKjc35Tv/tlyAnBzbvHmzBYWkFLJJ2E6cnMAqXtj2KWQvklLxkZQCgMSIg/xBTJ+dKrz3vSFDhqQ6KQAAAAAAAEKOpBQAAAAAAAB8Vz734AEAAAAAAAB+JKWeeeYZW79+faqTAwAAAAAAIMRSTkqdfvrp1qRJExs8eLD9/PPP5btUAAAAAAAAyGopJ6Vq1Khhy5YtswceeMB2331322+//ezZZ5+legoAAAAAAAAVl5T6+++/7eGHH7aOHTu6bg0nTpy4RfXUL7/8kupbAwAAAAAAIMulnJSqXbu2nXPOOTZp0iQ3nHXWWVarVq1o9VT79u2pngIAAAAAAEDF9b7XqVMne/TRR1311OOPP2577rlnhVRPjRo1ynJyckocPv744/JYLQAAgLSwZs0aGzt2rN1yyy3Wr18/a9myZTTuGTp0aNCLBwAAkJLKVo7UztTAgQPd8NNPP7kE1XPPPRetntKwzz772LnnnmvHHXecVa6c2uxzc3OtQYMGCV/Py8srw1oAAACkl2+++cYOPfTQoBcDAAAgfZNSsVq1amXt2rWzpk2b2vLly13llKh66osvvrBrr73W7rnnHjvqqKNK/d7Nmze3mTNnVsBSAwAApKd69eq56nRvuOSSS2zBggVBLxYAAED6JKV0Je+xxx6zV155xVavXu2SUapcOvbYY93w4YcfunamZs2aZcccc4wb7+ijjy7vxQAAAMgaaqdz6dKlWzx39dVXB7Y8AAAAadOmVEFBgT300EPWoUMH69atm40cOdJWrVplO+64ow0fPtzmzZtnzzzzjB1xxBHuFr45c+bYaaed5hJWw4YNK49FAAAAyFqVKlUKehEAAADSq1JKt+Gp3ajRo0fb2rVrXZJJ7UQdeeSRrme+Aw88MGHPfSNGjHBVUtOmTSvLIgAAAAAAACBMSan27dtHe9NTMqpZs2Y2aNAgO/PMM2277bYrcfqqVau6xspVNVVaixcvts6dO9tvv/1mmzdvdvNTA+qad48ePVJaHwAAAAAAAGRAUurnn3923RAffPDBrirq8MMPd73ilYYa6FQj6Kl0izx58mTX4KfarZoxY4Ybnn/+eTvjjDNcm1aJevZbv369G2JvPQQAAAgD4iAAAJAVbUpdddVV9ueff9p7773nbtcrbUJKLr74YhsyZEjS4zdp0sSN/8MPP9i6detcg59KUKlHP+9WQbVnpWRXImrDKj8/PzqoJz8AAIAwIA4CAADpJCeie++yQGFhofXr18/efPNNlyD79ddfrU2bNkldIQwqIMuSTY80ourFMO3LQa1vEMK2jTk+IpuOFytWrLA6deqU+/u2atXK9WasC3ZDhw5NappEcVBFLSMAZDLiIH8Q02cnxRi6AFZSjJFypdQOO+xge++9d6m6MlZvfBVFiai77rormqB6++23446Xl5fnNkjsAAAAEAbEQQAAICvalJo5c6a7hS5Zc+fOtdmzZ1tFat26tW277bb2zz//2F9//VWh8wIAAAAAAEDqUq6UKq1Nmzal1O4UAAAAAAAAso8vWaK1a9faokWLrHbt2hU6HzW8riop2X777St0XgAAAAAAAPDh9j3deqdb9mJt2LDBPvvss4SNden55cuX2/PPP28bN2609u3bp7ygeq/iGkDT61dccYV7rIqsww8/POV5AQAAAAAAIE2SUiNHjrSbbrppi+eWLVtmPXr0SDqhdPbZZ6e2lGaud5njjjvOBg4caAcddJCrhNJ7qlHzb775xvU688EHH7hxNZ+dd9455XkBAACkG8Vdmzdvjv5fMZCsWbMmWiku1apVs1q1agWyjAAAABXW0HlsRZQSQiV1Z6hx1KvLbrvtZuecc46ddNJJVhbffvutG7zeY3Q74MqVK7fo2viMM86w+++/v0zzAQAASDcdO3Z0F+mKGj58uBs8p512mo0aNcrnpQMAAKjApNSQIUPc4NEtco0bN7b58+ebHxo1amQPPPCAffnll/b999/b4sWL3RVDXQ1U1dQ+++xjAwYMsO7du/uyPAAAAAAAAPCpUipW//79rW7duuaX6tWr2wUXXOAGAACAsCnaticAAEBok1KUhQMAAAAAAMD3pFRRattp8uTJtmjRIvf/hg0bWqdOnVy7TwAAAAAAAEC5JqV+/PFHu/baa23s2LHRXmBi25067LDD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iwMAAOALYiAAAJBNMi4ppUBs5MiR7vGhhx5q2223XdCLBAAAUOGIgQAAQLbJuKSUStZVui407gkAAMKCGAgAAGSbypZhevfubZFIJOjFAAAA8BUxEAAAyDYZVykFAAAAAACAzEdSCgAAAAAAAL4jKQUAAAAAAADfkZQCAAAAAACA70hKAQAAAAAAwHckpQAAAAAAAOA7klIAAAAAAADwHUkpAAAAAAAA+I6kFAAAAAAAAHxHUgoAAAAAAAC+IykFAAAAAAAA35GUAgAAAAAAgO9ISgEAAAAAAMB3lf2fJTyRSCToRQAAxMjJyQl6EZBF59yCggLLz8/3fb4AwiFMvyWCOj+HaRsHub5BfL7EfOmDSikAAAAAAAD4jqQUAAAAAAAAfEdSCgAAAAAAAL4jKQUAAAAAAADfkZQCAAAAAACA70hKAQAAAAAAwHckpQAAAAAAAOA7klIAAAAAAADwHUkpAAAAAAAA+I6kFAAAAAAAAHxHUgoAAAAAAAC+IykFAAAAAAAA35GUAgAAAAAAgO9ISgEAAAAAAMB3GZeU+uijj+y4446zli1bWrVq1ax69eq2ww472Mknn2z/+9//gl48AACACkMcBAAAsklOJBKJWAbQYp577rk2YsSI6HMKxGTt2rXR5y655BK75557kn7fgoICy8/PtxUrVlidOnXKeakBAKnIyckJehGQZYIId8ozxiAOAhBmQcUFGfJTOeMR92W3kmKMjKmUGjVqVDQQO+aYY2z69Om2Zs0aN/z666/Wp08f99q9995rY8aMCXhpAQAAyg9xEAAAyEYZk5R65pln3N/WrVvbiy++aG3atIm+tvPOO9vo0aNd+bq88sorgS0nAABAeSMOAgAA2ShjklJ///23+7vHHntY5cqVt3q9SpUq1qFDB/d41apVvi8fAABARSEOAgAA2ShjklLe1b8ffvjBNm3atNXrGzdutO+//9497tKli+/LBwAAUFGIgwAAQDbKmKSUGveUP/74w0488UT31/Pbb7+5nmj++usv23HHHV0jnwAAANmCOAgAAGSjjOl9T+677z676qqrbMOGDVv1OlO3bl0XpN1yyy1Wv379pN+TXmcAIP3QCwvKW6b3vifEQQDCit73shtxX3bLmt73ZPDgwfb6669bw4YNo0GY1w2yAjS1oaAVLs769etdABY7AAAApDviIAAAkG0y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4YdHcnNz3ZCTk1Ps4I2naTRtEFatWhU544wzIgMGDEj5PebOnRt54403Iq+99lpk+vTpSU1z9913R2688caU5vfll19GGjduHN1+GnbeeWe3HHLDDTds9RnocYMGDSI//PBDpKK3pze/sho3blzk888/j/va5s2bIxdddFGkcuXKW2wHDXruggsucOOkYsWKFW47zZw5M+7r9957r9uWRefbvHnzyLPPPhtJ1b/+9a/I1VdfnfQ+VJ60/5500kmRI488MnLzzTdHVq5cGX3txx9/jOy///5brOs222wTueWWWyKFhYUpz1Ofz2WXXRapWrVqiccLb77dunWL/Pbbb5GKsnr16siCBQvcoMfIXhs3boz897//dUO2W7RoUeTbb7+NTJo0KfLPP/8EvThZLRPjoEw6hgd1ngwqLgjyHO13zBdk3BeUdI7nK/Lc4ffvpkyL+crjtymyP+4jKZXAhg0bIp06dYoeOHfYYYfIeeedF3n44Ycjb775ZuSjjz5ygx7rOb224447Rg+wXbp0cTuL33SQTfWEunbt2kj//v23Ojn26NEj8tNPPxU7rXcSKq2lS5e6k1G8oE9ByXfffefet1KlSpEDDjjABTF777139HNp3bp1ZN26dZFMCFD0Pk2aNIn7mg7UsSdpbZPY7aLXzjzzzJTmO3ToUDf99ddfv9VrZ511VrHBt1676aabUppvbOCuz1KBrPaxiqYfFbFBj/7utNNOkWXLlkVmzJgRDbTjrespp5yS8nyPPvro6PvWq1cvstdee7njQH5+vnsuLy/PfQZDhgyJHHbYYe7/el7B9vfff18u6/7777+7z3ufffaJ1K1bd6vvsp7TaxpH4wZlzZo1LhhLdd/yrF+/3m07HSdif9QU55VXXok8/fTTZZrvF1984d5H8y1q6tSpkYsvvth9xieccELk0UcfrdBjVNFjlY6VfigoKIiMGTPGBdYaXn/9dfdDtyw2bdrk3kP7RzyaX4cOHbbYp7W+3bt3j0yYMCHl+er4q8+prMufbTIxDirLsSWIY3hQ58mg4oIgz9FBJKWCivuCOKYFGc8Hde4I4ndTJsZ8ZfltGouYL/vivlgkpRLQxtYHrWDkxRdfTHq6l19+2U2jL56uNGXSF//QQw9NGIjUqFEjMmrUqHI/uN56663u/Rs1ahT58MMP3Q7/zjvvROrXr+/er1evXu7xN998s8V0H3/8caRWrVpunJEjR5ZqnkUP2qkMqRwAtJ7bbbfdVs/rhOh9Zn379o388ccf0df+/PPPyFFHHRV9XQfG0urZs6ebVleGYr377rvRz1cn6+eeey4yefJkd9BVYLzHHntE56urX6msb2zQqUGB/vnnn+/mUxH+97//RddJP470I0N/NW/N97TTTnOv6crdAw88EHn//ffdyUqBibecY8eOLfV8dYzQ9NondUKKvbqpH3Z33XWXu/retm3baNC0cOFC93lruu23375MP0T0w0/rV6VKlaSrGTSursRq+TItQNHVcl1xrVOnTnTfqlatWuT000+P/P3338VOq2NVqidwBXW77bbbFscCfb/0Y0oee+yxuFe99YNr1qxZkUz5MaXjTnHLe88992yx7b2hdu3abl9P1e233+7eRz9ai1I1RdEr7LGDtvuTTz6Z0ny97VazZk13jPj0009TXodskolxUKrHlqCO4UGcJ4OMC4I4RwcV8wUZ9wVxTAsing/63BHE7yYh5iPmy5a4LxZJqQT23HNPt7GVGS0tTaOdRO+RKV98ZT696c455xxX3qoS6vvvv99d5fFe0//L8+CqQEPTFS0HVzDizVNfhHiGDRvmxunTp0+p5lnSwTuZIZV1TRSc6MqfXuvdu3fCaQ8++OCUr5o1a9bMTVs0YD7iiCPcfI8//vi4JfF67rjjjnPjnHzyyaWer6bbdttt3Q+bdu3abbHtNHTs2NFdXS/PLLuWU/NQQOddoddfBX0KhhT4dO3adattoR8g2v6a9thjjy31fA866CC3Ts8880zCce688073/tpvY+er2zc07X333RdJ1b///e9oYKIThAKlK6+80pX0Pv74427QYz2n1zSO91kccsghkUwLUAYOHBg3ENNzDRs2dEFuIqkeq7TPqFKk6Hy9HxW6hUc/WvVcy5Yt3dVJfd+98VRxUtpbT/RDN9mhVatW0eWJfV7LXFrFXd2/7rrrig2CE1VflGY/Lnq7y8SJE6Pz1DbVbTy6QqdbJfSDw9vOqlz5+eefyyUxoB/Fw4cPd4mHsMrEOCjVY0tQx/AgzpNBxgVBnKODivmCjPuCOKYFEc8Hee4I6ndT7PoS82VXzBfGuG+LZdA/QbdrlY7Ui8yGDRtszZo1pZ5Wm7RmzZpWtWpV10tNad10002WKi3vnXfe6Rpp3Lx5c9LTHXXUUfbWW2/ZwIEDXQOEsdTI5ymnnGLvvvtutPFHNUoYa7vttrNFixaVap6y7bbb2rJly1zDiDVq1Ig+r4Y11dij5rdw4UI3XlFqRLFFixau0VE1hpks9aCj9+3WrZsddNBBxY6rfWDYsGFu/BtuuGGL14YMGZL0PL35qiFY9VoUSw1BqmHViRMn2t577x132q+++so1rNquXTv7+eefSzXfatWquf1xyZIlWzyvZVm8eLHb1s2aNYs77Zw5c9z21euzZ88u0/p++eWX9sQTT9jo0aNt1apV7jltVy3fMccc4/a9/fff38rC25a//vrrFo2ETp8+3dq2bevmp8Zre/XqtdW0U6dOtQ4dOrh9Su9RGo0aNXLfE+3HsQ16xtJ+rO/JXnvt5baFR5/7fvvtZ/vuu699+umnVlpPPvmkDRo0yM33xhtvtAsvvNB93iUdJx588EG3T6thV30uZ5xxhvlF+2KDBg1KfZzyGlzW56dpDz74YBswYIDbh/T8iBEj3Lrp2Pviiy+641pRqR6rHnjgAbv44ovdceree+9131V9Xpdffrk7Thx77LHuGPrCCy9Y3759o9M99dRTds4557j5vfzyy25fL+2xqiyn6VS2caJj1ffff2+dO3d2j7t06WK33XabO46K9unrrrvOvv76a6tUqZIbd9dddy3VfFu1auWOOerpLHYfPuGEE+yVV15xDeJqGxfdv1evXu0a0/3f//4X9xyWzPrqnK/z3PPPP+/OSd62U09ranRY73vIIYf40thyuggyDvL72BLUMTyI82SQcUEQ5+igYr4g474gjmlBxPNBnjuC+t0UVMwXxG/TsMV8YYz7tlDmtFaW0tUaDalSyawy06mIvbKRypBKNtq7apaodE/ZXpV9eu+tq3rlkYlWOanK/OPdN+xdASiOPiNt69LQFZnq1au75dW94MU1dljebUrFu2KmZVEZanEZdb2mcVQ6WVq6x1/TFqUMv65MlkTj6CpSea2vtqmu4qgtgaJXhVXyescdd7hGGlOhbZlof1ApteaxZMmSYrex3qO0tH1K2pYqmfauqBSdrz4LfU6p2G+//dx66Wp6aWkar72H0tItFakODz30UMrfqxNPPDF6pb2ov/76K9K5c2f3urbp6NGjtxon1WOVd7vLgw8+GPeWheKuFF111VXR6oPS8N5XlQMqUy9u8K68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epjfFAwGOX8AAMqKGMg/xEAAyoJKKSBLvf322+5kqmBsm222sWHDhrnHGzZssCVLlri/3377rV199dVWp04de/31123NmjVBLzYAAECZEAMBQOaoHPQCACh/v//+u51yyim2fv1622WXXeyDDz6wZs2abTFOpUqVrEuXLm644oorbMCAAYEtLwAAQHkgBgKAzEKlFJCFrrvuOisoKLBq1arZmDFjtgrGiqpfv7698cYblp+fv9VrCxYscAHbrrvuajVr1nSDHl955ZW2cOHChG0LeG0C6LHGu/jii2377bd3y9SoUSM74YQT7Ndffy12uVRar7Yg+vbta02bNrW8vDxr0KCBde7c2a666qqE7UCsXLnSbr/9duvWrZtbN03XvHlzN88vv/wyqWVWUHv66ae7bafpW7RoYeecc47Nnz9/q2lbtWoVLTcX7328Qe9TXmLbWtB66rNu27atVa9e3V0NPvzww+3rr78u9j2WLVvmPtMdd9zRfR7bbbedHXvssfbdd98ltQz6XJ5//nk79NBD3Wep2x30ufTu3dvd/lC0dP+PP/5wV6K13NoP4tG6tGnTxo1z8MEHl6n8HwAQXsRAxEDFIQYC0pDalAKQPRYsWBDJzc3V2SwycODAMr3XhAkTInXr1nXvpaFmzZpu8P5fr169yGeffbbVdDNmzIiO884770QaNmzoHteoUSOSl5cXfa1OnTqR77//Pu68Fy9eHNl///2j42rQstSqVSv6/z59+mw13ZQpUyLNmjWLjlOpUqVI7dq1o//PycmJ3HbbbcUu80svvRSdRvOrXr169LX69etHvvvuuy2m7dKli9sW3jiNGjXaYrjooouS3ubjx4+Pvo8eF+W99sILL0Rat27tHlerVs1tW++1qlWrRj744IO476/1bNmy5Rbj6nPwHr/55pvFzn/JkiVbfS75+flb/P/II4+MrF+/fovpnnnmmS32iaJOOeUU95r2Fe3DAACUFjEQMRAxEJB5SEoBWebFF18s9sSXrNmzZ0eDsV122SXy+eefR1/79NNPIzvvvHM0QJk7d27C4EaBSvfu3SPffvute23jxo2Rjz76KLLddtu51/fbb7+t5q1xNI1eVwB3xx13RBYtWhR9fd68eZERI0ZErrnmmi2mmz9/fjT469evX2TSpEmRDRs2uNcWLlwYuf766yOVK1d2r48ZMybhMivA2H333SNff/21e62wsNAFOC1atHCv629BQUHCQKoskg3ItF31uXzyySeRzZs3u2X85ptvop+Lgi49H2vTpk0uePSmf+WVV9y2lp9//tl9FrEBeNH5a/oDDjjAvdahQ4fI22+/HVm9erV7bdWqVZGnn346uv0HDx681bKfeuqp7rVtt93WfVYeTecFy2PHji3T9gMAhBcxEDEQMRCQeUhKAVnmuuuui55QFbik6pxzzomeuP/++++tXp8zZ0706tL555+fMLhp27ZtZM2aNVtN/9Zbb0XH0XvFeuKJJ6In6HfffTfpZR4wYICb7qSTTko4zj333OPG2WOPPRIu8zbbbOMCuKJ++eUXdyVN49x5552BBmQNGjSIu4xTp06NjhMbRMvLL78cfe3jjz/ealoFVzvuuGPC+XtX+vSZLl++PO7yKwjW56btVHT5Vq5cGb2y2atXLxcw/v7779Erv5dccknS2wkAgKKIgYiBiIGAzEObUkCWUa8yHrUlkAqd99WOgagNgcaNG281jtoZ0Gvy0ksvJXyvyy67zN3rX9QhhxwS7Xr5xx9/3OK1p556yv3V/foakrFu3Tp74YUX3GO1tZBI//793d8ffvghYXsQWq+GDRtu9Xy7du3smGOOKXGd/XDWWWfFXcb27du7ditk6tSpW7zmLXP37t2tV69eW01bo0YN105GIk8++aT7e+6558Zte0PU1oXa21DPRupOOVatWrXcMuhzHzdunN1888124okn2qpVq6xjx46uDQwAAFJFDEQMRAwEZB6SUgC2MmPGDFu6dKl7fOCBByYc76CDDooGgZomnr322ivu85UrV3YNQ4o3L9m0aZPrplmOOOKIpJdZDVQqKBM1NqkgMt6gYMEza9asuO/1r3/9K+F8vNcU7GzcuNGCkmi7SpMmTbbarjJp0qSk16+ozZs321dffeUeDx06NOH21fDbb78l3L4K2G677bbo+2iZ1HCsF6gBABAkYiBioKKIgYCKVbmC3x+Az9T7iEcnZO/kXBqLFi2KPlaPL4nE9mijabyrU7Fq166dcHoFZRIb2Ci48/7fsmXLpJc5tkeYRFf/ilqzZk3c54tbZ+81BY7avup5JQil3a6xn2uyn2ksrau61/Z6rinL9r300ktdAOYFiHfddZfttNNOSb0nAACJEAMRAxEDAZmHSikgy8ReBZsyZYplGnWHmwpdxfKsXbvWld+XNPTo0aMclzy7xW7fsWPHJrV9dRUwHl0F1q0Dnk8//dSXdQAAZDdiIGKgikAMBFQsklJAlunZs6fl5v7fV3vMmDEpvUfsffpz585NOF7sa/Hu7U+F2oCoUqVKsaXl8cS2+VCa6eKZN29eia/pSlyq7VUExfuMklm/eFefvauPZdm+BQUFrg0FXcFU2w8KwF988UUbNWpUyu8JAIAQAxEDJUIMBKQvklJAllEp9dFHH+0eq9HL6dOnJz3t/3VsYq4E3Qs21BhjIh9//HH0ZB2vbD0VOul37drVPX777beTnm7PPfeM3o9fmuniKdo4ZbzXdt9992jgKF4QHLsd002XLl1KXL9PPvkk7vNa11Q+l6LUQOhff/3l9lPtPxdffLF7/sILL7Tff/895fcFAIAYiBgoEWIgIH2RlAKy0C233OJ6+VAJd79+/Yq9KuTdH68gbsWKFe7/unJz/PHHu8cjRoywBQsWxG2/QK+JrvqUp4EDB7q/7733nhuSoYYiTzrpJPf4jjvusNmzZxc7ftEGMGM9+uij9s8//2z1vBqvfPXVV91jb/t46tSpE328fPlyS0feMn/++ec2YcKErV7X/jJ8+PBie7tJ9nOJt32ffvpp9yNB+5ce66qlPiv1OqPeZ7QfqccaAABSRQxEDBQPMRCQxiIAstKYMWMiVatW1eWqyLbbbhu5/fbbI7///nv09U2bNkUmT54cuf766yN169Z14y1btiz6+pw5c6LP77rrrpGJEydGX/v8888j7dq1c6/Vr18/Mnfu3C3mPWPGDPeaBj1OpGXLlm6ckSNHbvH8xo0bI/vuu697rVq1apE777wzsnjx4ujr8+bNi9xzzz2RK6+8covp5s+fH2nSpImbTn+feeaZSEFBQfT1RYsWRV599dVI3759I7179064zPn5+ZEOHTpEvvnmG/daYWFh5KOPPooub/PmzSMrVqzYYvrVq1dHt7eWV9OkYvz48dHl0OOiinvNc8ABB7hxhgwZstV27dSpU/Rz07bQfiC//PKLm877zOPNQ+MeeOCB7jWt68033+w+C8+qVasin3zySeS8885z2zCW9r1atWq5aS+99NItXvv1118jNWvWdK9ddtllpdxiAABsiRiIGIgYCMgcJKWALKbAqXXr1tETrHci1ck4Nzc3+lxOTk7kxBNPjGzYsGGL6SdMmOBOrN54Oml6J04NOnl/+umnW823rAGZKADbb7/9tlhGzc87qWvo06fPVtMpsNhpp52i42g9tb6xy61BgUWiZX7ppZcitWvXdo81vxo1amyxzt9++23c9Rk4cGB0PE3TokULt46lCTIqMiCTP//80wWU3vvk5eVFP2PtG2+++Wax81Agevjhh2+xLevUqeO2iz4j77nKlStHp9F+1aVLF/d8x44dI+vXr9/qfZ988sno5/zBBx8kvb0AAIiHGIgYqChiICA9cfsekMW6d+9uv/76q2tE8eSTT7bWrVtbtWrVbOXKla69hH333deuvfZamzZtmispjm0fQA444AD32mWXXWbt2rWzwsJC11aAHl9++eXutf32269Cln3bbbd15dXPPfecHXLIIdagQQNbvXq11ahRwzp37mxXX3213XbbbVtNp2WbOnWqK6vv3bu3ex81LKnl1vofe+yx9thjj9krr7yScN577bWX66q3f//+lp+f77o+VhfCgwYNsh9//DHaLkFRDz30kOttRY1Xisrn1SBmvDL4oOywww72/fffuy6J1QaGtov2iWOOOca++OILO/LII4udXiX6ak9BpesqhW/RooXrJlldH2sbaZsPGzbMlfl7/vOf/7jtqdsLtC967V7EGjBggB133HFuebTdY7vkBgCgtIiBiIGKIgYC0lOOMlNBLwQABG3mzJnRhkpnzJhhrVq1CnqRAAAAKhwxEIAgUSkFAAAAAAAA35GUAgAAAAAAgO9ISgEAAAAAAMB3JKUAAAAAAADgOxo6BwAAAAAAgO+olAIAAAAAAIDvSEoBAAAAAADAdySlAAAAAAAA4DuSUgAAAAAAAPAdSSkAAAAAAAD4jqQUAAAAAAAAfEdSCgAAAAAAAL4jKQUAAAAAAADfkZQCAAAAAACA+e3/AxpER3EQwmYCAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a visualization to compare original prototypes with clustered results\n",
    "fig, axs = plt.subplots(1, 2, figsize=(12, 6))\n",
    "\n",
    "# Original prototypes\n",
    "axs[0].imshow(prototypes, cmap='binary', aspect='auto')\n",
    "axs[0].set_title('Original Matrix', fontsize=20)\n",
    "axs[0].set_xlabel('Concept Index', fontsize=18)\n",
    "axs[0].set_ylabel('Prototype Index', fontsize=18)\n",
    "\n",
    "axs[0].set_xticks(ticks=np.arange(len(col_perm)), labels=np.arange(len(col_perm)), rotation=90, fontsize=18)\n",
    "axs[0].set_yticks(ticks=np.arange(len(row_perm)), labels=np.arange(len(row_perm)), rotation=0, fontsize=18)\n",
    "\n",
    "# Spectral co-clustering result\n",
    "axs[1].imshow(spectral_prototypes, cmap='binary', aspect='auto')\n",
    "axs[1].set_title('Spectral Co-Clustering', fontsize=20)\n",
    "axs[1].set_xlabel('Concept Index', fontsize=18)\n",
    "# axs[1].set_ylabel('Prototype Index')\n",
    "\n",
    "\n",
    "# Set ticks to original indices (after reordering)\n",
    "axs[1].set_yticks(ticks=np.arange(len(row_perm)), labels=row_perm, rotation=0, fontsize=18)\n",
    "axs[1].set_xticks(ticks=np.arange(len(col_perm)), labels=col_perm, rotation=90, fontsize=18)\n",
    "\n",
    "# Genetic algorithm result\n",
    "# axs[2].imshow(X_reordered, cmap='binary', aspect='auto')\n",
    "# axs[2].set_title('NMF Clustered Data')\n",
    "# axs[2].set_xlabel('Concept Index')\n",
    "# axs[2].set_ylabel('Prototype Index')\n",
    "\n",
    "plt.tight_layout()\n",
    "plot_dir = os.path.join(PROJECT_ROOT, 'output', 'plots', 'comparison')\n",
    "os.makedirs(plot_dir, exist_ok=True)\n",
    "plt.savefig(os.path.join(plot_dir, f'{use_dataset}_clustering_comparison.png'), dpi=600, bbox_inches='tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "849df177",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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libInTu3OFVMTExQ9xfhpxqACPmsCQU+3yKbL9/7NNUBAABES1Pdnj17Qn0IAAAgSpBxAgAAsInACQAAwCYCJwAAAJsInAAAAGwicAIAALCJwAkAAMAmAicAAACbCJwAAABsInACAACwicAJAADAJgInAAAAmwicAAAAbCJwAgAAsCnW7opwHpfLFepDgJ9iYmLE6ThPI/+84X8IJ32+kXECAACwicAJAADAJgInAAAAmwicAAAAbCJwAgAAsInACQAAwCYCJwAAAJsInAAAAGwicAIAALCJwAkAAMAmAicAAACbCJwAAABsInACAACwicAJAADAJgInAAAAmwicAAAAoiFwOnHihEycOFG6desmVapUkRw5ckiWLFmkRIkS0q5dO5k1a1aoDxEAADhIjMvlckmEypQpk1y7ds39d9asWSVjxoxy/vx5920tW7aUr7/+WrJnz277cc+ePSt58uSRM2fOSO7cuQN+3ECgxMTEiNNF8EdU2Ar2ecP/EJHy+Wbnez+iM04aNNWtW1fGjRsnf/31l1y8eFHOnTsnu3fvlt69e5t15s2bJ0888USoDxUAADhARGecFi9eLE2bNk32/r59+8r48ePN9X379klcXJytxyXjhEhBxglpQcYJkSCGjFPgpRQ0KSvrpH7//fcgHBEAAHCyiA6cUqN9nizXr18P6bEAAIDIFysOtmTJEvf1qlWrJrve5cuXzeLZVAcAABA1GafTp0/LyJEjzfWGDRtKxYoVk11X19M+TdZity8UAACILhHdOTw5CQkJ0rZtW5k7d65prlu1apXcdtttPmWcNHiiczjCHZ3DkRZ0DkckiAnTzuGObKp7+umnTdCkPvjggxSDJqVFM3UBAACIqqa6gQMHyvvvv2+uv/POO9KrV69QHxIAAHAIvwKn48eP+7Xz7777TgLphRdekNGjR5vrb731ljzzzDMBfXwAABDd/AqcqlWrJv/73/983u7KlSvSv39/M59coDz//PPy5ptvmutvvPGGPPfccwF7bAAAAL8Dp0OHDkmLFi1kyJAhpkO2Hdu2bTPTpHz44YcBbZ7TDJMVNGkQBQAAEFaBU4YMGcxoiVGjRpkh/zqtSUo+/vhjqV27tmzatMlsd/PNN0sggibP5jmCJgAAEJaBk84VV6JECRMErVy50jTdzZgxw+vwvgcffNDMHXfhwgWzfteu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H03Q1KJFC+nVq5etbbR57t577zXR8vz58/3ZPQAAQOQETrt27TKX7dq182m7tm3bJtoeAADA8YGT1mlS+fPn92k7a33tOA4AABAVgdNNN91kLnfv3u3TdtZkwb4GXAAAABEbOOkcddpXacqUKWaknB3Xr18362vfKOa4AwAAURM43X///eZyy5Yt8o9//CPV4ZF6/5NPPimbN29O1NcJAADA8XWcLl26ZApdHjhwwPx92223ycCBA6V58+aJ5qY7duyYLFiwQEaPHi0bNmwwt5UoUcIUxsySJYuEG+o4AQB8QR2n6Knj5PeUK7/99pvcdddd7ulWLDq5rxa51ErhVidypbvT25csWSK1atWScETgBADwBYFT9AROfjXVqTp16sjy5culSpUq5h9pLRp8HD582Fx63l61alVZsWJF2AZNAAAA6TZXndVEt3HjRvn+++9l5syZsmrVKjMdi2aaNPNUtGhRuf3226VDhw7SqlUrx0/aCQAAnMnvpjonoqkOAOALmuoCz7FNdQAAANHCr8BJ56fTZf369T5tp+UIdLvevXv7s3sAAIDIaarLkCGDSaXNmjXLXdPJ7uTALVu2NNtqQcxwQ1MdAMAXNNUFHk11AAAAES4kgZOVZYqNDcigPneW6PXXX5f69etLwYIFTWFNLbLZtGlTGT58uJw+fTpg+wIAANEpcJGLD6xJgQPVDLZ48WLp0qWLHDlyxPydOXNmyZ49u6lorosW22zXrp1Ur149IPsDAADRKUMw2yG1uviyZcvk3XffNdtUrlzZ731r8c377rvPBE3t27c3lcx1KphTp06ZquWrV6+WIUOGmD5LAAAAQck4vfTSS/Lyyy977aCm2Zy0eOCBB8QfGoh1795dLl68KP/85z/lvffeS3S/Zp20srkuAAAAQW2qS64Xf1p69zdp0kT69+8v/pgyZYrs2rVLihQpIm+88YZfjwUAABCwwKl06dLSuHHjRLf9/PPPpslN56krUKBAqqULcubMKWXKlJFmzZqZqVf0Nn9MnjzZXHbq1EmyZs3q12MBAACEZR2nQLh8+bLpXH7lyhWZNGmSGT03YsQImTdvnunvlC9fPqlbt6707dvX9IFK7bF08RyhFxcXRx0nAIAt1HEKPEfWcWrUqJFZUss2pYc9e/aYoElpc92tt94qH3/8sRw9elRy5MhhLufOnSutW7eW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PWuJi4sLwlECAIBI47jA6Y8//pBVq1b51Cl88ODBcubMGfeyf//+dD5KAAAQiWKdmm3KmjWrdOvWzdY2WbJkMQsAAEDUZJyuXLkiU6dONdc7dOggefPmDfUhAQAAB3FU4DRnzhw5fvy4uU7tJgAAEGgZnNhMV65cOWncuHGoDwcAADiMYwKnffv2yU8//WSu9+rVK6zm1AMAAM7gmMDp008/NUU6Y2NjpUePHqE+HAAA4ECOCJw0YJo4caK53qpVKylatGioDwkAADiQIwInbaLTpjpFp3AAAJBeHFHHqUWLFmEzuTAAAHAuR2ScAAAAgoHACQAAwCYCJwAAAJsInAAAAGwicAIAALCJwAkAAMAmAicAAACbCJwAAABsInACAACwicAJAADAJgInAAAAmwicAAAAbCJwAgAAsCnW7opIXy6XK9SHAACOEBMTE+pDQIR9L549e1by5Mlja10yTgAAADYROAEAANhE4AQAAGATgRMAAIBNBE4AAAA2ETgBAADYROAEAABgE4ETAACATQROAAAANhE4AQAA2ETgBAAAYBOBEwAAgE0ETgAAADYROAEAANhE4AQAABBNgdPChQvlwQcflFKlSknWrFklW7ZsUrZsWenatav8/PPPoT48AADgEDEul8slEUoPvV+/fjJ+/Hj3bRo0qYsXL7pvGzBggLz99tu2H/fs2bOSJ08eOXPmjOTOnTvARw0A0SUmJibUh4AI5ApieOLL935EZ5wmTZrkDpo6duwof/75p1y4cMEs27Ztk7Zt25r73nnnHZk1a1aIjxYAAES6iA6cJk+ebC7LlSsnX375pZQvX959X8WKFWXGjBmmyU5Nnz49ZMcJAACcIaIDp0OHDpnLatWqSWxs7A33Z8qUSapXr26unzt3LujHBwAAnCWiAycrm7Rhwwa5du3aDfdfvXpV1q9fb67Xrl076McHAACcJaIDJ+0Yrnbu3CldunQxl5bt27ebkXa7du2Sm2++2XQQBwAAiNpRdWrMmDHy4osvypUrV24YVZc3b14TUI0YMULy58+f7GNcvnzZLJ696+Pi4hhVBwABwKg6pAWj6tLJM888IzNnzpRChQq5AyarFIEGU9q3SV+IlIwcOdK8YNaiQRMAAICjAictO/DQQw9J69atpWTJkrJgwQI5duyYWfR6lSpVZMqUKVK3bl3ZuHFjso8zePBg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RTl37pzs3r1bevfubdaZN2+ePPHEE6E+VAAA4AARnXFavHixNG3aNNn7+/btK+PHjzfX9+3bJ3FxcbYel4xT+iDjhLQg4wQgvUVNximloElZWSf1+++/B+GIAACAk0V04JQa7fNkuX79ekiPBQAARD5HB05LlixxX69atWpIjwUAAES+WHGo06dPy8iRI831hg0bSsWKFZNd9/Lly2bxbOsEAACIioxTQkKCPPLII3Lo0CHTXPf++++nuL4GWNopzFrsdiIHAADRxZGB09NPPy1z58411z/44AO57bbbUlx/8ODBpie9tezfvz9IRwoAACKJ45rqBg4c6M4wvfPOO9KrV69Ut9Fq47oAAABETcbphRdekNGjR5vrb731ljzzzDOhPiQAAOAgjsk4Pf/88yZYUm+88YY899xzoT4kAADgMLFOaZ6zMk0aNGkQBQAAEGixTgqaNONEpgkAAKSXWKf0aXr77bdlwIABoT4kAADgYBE7ya9O2luqVClzPUOGDFKwYMFUM1O62MEkv+mDSX6RFkzyCyC9+fK9HxvJRS49rx85ciTF9c+dOxeEowIAAE4WsYFT6dKl+WUIAACCylF1nAAAANITgRMAAIBNBE4AAAA2ETgBAADYROAEAABgE4ETAACATQROAAAANhE4AQAA2ETgBAAAYBOBEwAAgE0ETgAAADYROAEAADh9kt9gyJMnT6gPwVGCPSlzTEyMOF2wnyMTawOIdmScAAAAbCJwAgAAsInACQAAwCYCJwAAAJsInAAAAGwicAIAALCJwAkAAMAmAicAAACbCJwAAABsInACAACwicAJAADAJgInAAAAmwicAAAAbCJwAgAAsInACQAAwCYCJwAAAJsInAAAAGyKlQi3du1a+e6772TNmjXy559/yrFjx+Ts2bOSO3duqVSpkrRq1Ur69esn+fPnD/WhAgCACBfjcrlcEsH69+8vH3zwgfvvrFmzSqZMmSQ+Pt59W4ECBeTbb7+VO+64w9ZjauCVJ08ecboI/9enKiYmxvGvabCfYyjOmWh4jgBCy/reP3PmjEm8OLqprm7duvLmm2/Kr7/+KqdOnZKLFy+aF0ADp88++0wKFiwox48fl3bt2pkXBAAAIGozTqlZsGCB3HPPPeb61KlTpWvXrqluQ8bJGcg4BR4ZJwBOFFUZp9TUq1fPff3vv/8O6bEAAIDI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ggXN31q+4P3335e6deua7YLp8uXLpn3TcwEAAAhK4PTLL79It27dpHjx4vLcc8/J9u3bTXCkmaY2bdrIDz/8YJrvxo8fb5rotO5T5cqVzTq6ro7UCybtk6WdwqwlLi4uqPsHAABRFjhp+YF33nnHBECaXdLSADoViwZDhQoVkn/961+m7tOcOXNMs53VXJcpUybp0qWLrFu3zkzhout/++23EkyDBw82PemtRTu2AwAABLQApvr5559N+YFZs2aZJi/PYYvap6lfv37SoUMH01k8JZkzZ5YnnnjCFM/UcgLBlCVLFrMAAACkW+CkZQW0yc0zWNL6B4888ogJmLRvky80M6XSo1AmAABASAOnP//80329WrVq8o9//EO6du0q2bNnT9Pj5c+f32SpnF5IDAAARGHgpM1rDz30kMku1atXz++DqVOnjqnvBAAA4LjA6eDBgyZLBAAAEA38Cpy0WKUu2jcpa9astrfTTuTWPHYlS5b05xBMzSeds86SkJBgLi9cuGCmeLHo8eXMmdOvfQEAgOjm1yS/GTJkMMvMmTPl/vvvt72dTsPSsmVLs60/c9V5TuqbmkcffdRMPGwHk/wCcDIm+Q08p/fNdfr/8GwwJ/n158V0+j8CAAA4i991nEJtz549oT4EAAAQJYIyyW9S8fHx5jKtZQsAAACiJnD66aefzGXRokVDsXsAAID0barTqVV08WbatGmyfv36VPsznT9/XtauXSuLFy82Hel0bjoAAADHBU5amPLll1/2GhB99dVXPu1Ut9HJfZ966imftgMAAIiYpjoNeDyX5G5PbalZs6Z899135hIAAMBxGacePXpIkyZN3H9rAHTXXXeZJrdXXnlFGjRokOL2WrNJC1CWKVNG8ubN699RAwAAhHPgVKpUKbN4c+utt0rjxo0DeVwAAADOquOknbytwAkAAMDp/AqcyDIBAIBoki6Vw3UC30OHDplCl7ly5ZJixYqZiYABAAAiWcACp3379sm7775rJvzV60mVLFlSOnbsaEoQxMXFBWq3AAAAQRPjCsBMuxMnTjQB0YULF8zf3h7Smjlap1kZO3asGaXnhFmSASDSWJ/HwRINE7oH+zUNNqf/D8/68L0fG4igqXfv3uak0RdWLytXriwVKlQw5QfOnTsnf/75p2zbts1dPVzXV+EcPAEAAAQ046T9mMqXL28yTRowPfHEEzJo0CDTLJfU/v37ZdSoUTJ+/HhJSEiQHDlyyI4dO6RIkSISbsg4AeGD7AgQnRk1VxDfi7587/s1ye+4cePcQdPHH39s/vYWNCnt1/TBBx/IJ598Yv7W7XR9AACASOFX4PTjjz+aoKlFixbSq1cvW9to89y9995rIsn58+f7s3sAAIDICZx27dplLtu1a+fTdm3btk20PQAAgOMDJ63TpPLnz+/Tdtb62nEcAAAgKgKnm266yVzu3r3bp+327NmTpoALAAAgYgMnnaNO+ypNmTLFjJSz4/r162Z97RvFHHcAACBqAqf777/fXG7ZskX+8Y9/pDp0UO9/8sknZfPmzYn6OgEAADi+jtOlS5dMocsDBw6Yv2+77TYZOHCgNG/ePNHcdMeOHZMFCxbI6NGjZcOGDea2EiVKmMKYWbJkkXBDHScgfFDHCQg96jgFcMqV3377Te666y73dCsWndxXi1xqpXCrE7nS3entS5YskVq1akk4InACwgeBExB6BE4BaqpTderUkeXLl0uVKlXMk7QWPYjDhw+bS8/bq1atKitWrAjboAkAACDd5qqzmug2btwo33//vcycOVNWrVplpmPRTJNmnooWLSq33367dOjQQVq1auX4yRABAIAz+d1U50Q01QHhg6Y6IPRoqgtgUx0AAEC08Ctw0vnpdFm/fr1P22k5At2ud+/e/uweAAAgcprqMmTIYNJ3s2bNctd0sjs5cMuWLc22WhAz3NBUB4QPmuqA0KOp7v/QVAcAAGBTSAInK8sUGxuQQX3uaPH111+X+vXrS8GCBU1hTS2y2bRpUxk+fLicPn06YPsCAADRKXCRiw+sSYED1Qy2ePFi6dKlixw5csT8nTlzZsmePbupaK6LFtts166dVK9ePSD7AwAA0SlDMNs+tbr4smXL5N133zXbVK5c2e99a/HN++67zwRN7du3N5XMdSqYU6dOmarlq1evliFDhpi2SwAAgKBknF566SV5+eWXvXbe0mxOWjzwwAPiDw3EunfvLhcvXpR//vOf8t577yW6X7NOWtlcFwAAgKA21SXXwz0tPd+bNGki/fv3F39MmTJFdu3aJUWKFJE33njDr8cCAAAIWOBUunRpady4caLbfv75Z9PkpvPUFShQINXSBTlz5pQyZcpIs2bNzNQreps/Jk+ebC47deokWbNm9euxAAAAwrKO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WCFbt2411x977LGQHQcAAIjSwMlOIBQuZeCtbJNOndKpU6dQHw4AAIimwCkhIUEixblz52T69OnmepcuXSR79uyhPiQAAOAAET2qLjnTpk0zwZPdZrrLly+bxXOSXwAAAEfVcUrOJ5984q5iXqtWrVTXHzlypGnSs5a4uLggHCUAAIg0jguc/vjjD1m1apVPncIHDx4sZ86ccS/79+9P56MEAACRKNap2aasWbNKt27dbG2TJUsWswAAAERNxunKlSsydepUc71Dhw6SN2/eUB8SAABwEEcFTnPmzJHjx4+b69RuAgAAgZbBic105cqVk8aNG4f6cAAAgMM4JnDat2+f/PTTT+Z6r169wmpOPQAA4AyOCZw+/fRTU6QzNjZWevToEerDAQAADuSIwEkDpokTJ5rrrVq1kqJFi4b6kAAAgAM5InDSJjptqlN0CgcAAOnFEXWcWrRoETaTCwMAAOdyRMYJAAAgGAicAAAAbCJwAgAAsInACQAAwCYCJwAAAJsInAAAAGwicAIAALCJwAkAAMAmAicAAACbCJwAAABsInACAACwicAJAADAJgInAAAAm2LtrggAoeByucTJYmJigr5Pp7+moXh+wf4/huK8wf9DxgkAAMAmAicAAACbCJwAAABsInACAACwicAJAADAJgInAAAAmwicAAAAbCJwAgAAsInACQAAwCYCJwAAAJsInAAAAGwicAIAALCJwAkAAMAmAicAAACbCJwAAABsInACAACIpsBp4cKF8uCDD0qpUqUka9aski1bNilbtqx07dpVfv7551AfHgAAcIgYl8vlkgilh96vXz8ZP368+zYNmtTFixfdtw0YMEDefvtt24979uxZyZMnj5w5c0Zy584d4KMGgP8TExMT9H1G8Md+2ArF/xGBZ+d7P6IzTpMmTXIHTR07dpQ///xTLly4YJZt27ZJ27ZtzX3vvPOOzJo1K8RHCwAAIl1EB06TJ082l+XKlZMvv/xSypcv776vYsWKMmPGDNNkp6ZPnx6y4wQAAM4Q0YHToUOHzGW1atUkNjb2hvszZcok1atXN9fPnTsX9OMDAADOEtGBk5VN2rBhg1y7du2G+69evSrr168312vXrh304wMAAM4S0YGTdgxXO3fulC5duphLy/bt281Iu127dsnNN99sOogn5/Lly6ZDuOcCAADgqMCpTZs2puN3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JUvq8+LFi+u/BUFIvYg7AkFIRtiRe9y4cWr06NHq2LFjEcPjqK1t27bqhRdeUKVKlUqWMgruGJ8xdevWVcuXL/9HCE7xqLMgpGVE4yQIycRvv/2m2rVrp/73v//Zv1133XWqSZMmqly5clrThCbql19+0R+oFStWqPPnz6u5c+eqv/76Sy1YsCBFyy8IgiCI4CQIycKFCxdUixYt1MqVK/XfBQoUUJMmTVL33HNPWM+3gwYN0hqpl156SU2cODEFSiwIgiCEQ4zDBSEZePrpp22hib2S1q5dq9q0aeO5XQAaqFGjRuntBSpUqJCMpRUEQRDcEMFJEOIMU28TJkzQ5whKs2bN0sbFfkFowsbJa+8mtFeNGjVSBQsWVJkzZ1Z58uRRN954o3rmmWd0/l68+eab9sopzmHHjh2qR48eqkyZMip79uzq6quvVrVr11bjx4/X04d++fjjj1WnTp1U2bJldRqZMmVS+fLlU7fddpsWJjdt2uQZnynKyZMnq2bNmqmiRYuqrFmzqquuukpVrFhR9ezZU5czkjG3qZuxz/niiy/Uvffeq+2JSA/t31133aXee+8913RMGoYvv/zS/s15mPaLNfHqox9//FE98sgj2sbKtAW2TFOnTtX2eEGhP3v16qVuuOEGlTt3bpUlSxa9uIH2feONN7TmNRxjx46160f+XnlT7yuvvFKHveKKK3QdBCFZwThcEIT4MWjQIBZg6KNp06YxTXv9+vVW0aJF7fTDHdmzZ7def/111zSmT59uh+X87bfftrJly+aaXu3ata3ff//ds1x79+7V4bzKZY7ffvstbBrLly+3Chcu7Bk3Q4YM1ogRI1zL8dxzz9lhly1bZvXt29czvVatWll//fVXonT81MO0X1D27Nljxy9evHiy9dHUqVOtzJkzu6ZRp04d3Tfm77p167qmRZt16tTJuuyyyzzbp0KFCtauXbsSxb906ZLVpEkTO9yQIUPC5nPu3DmratWqdrhp06ZFbF9BiDVi4yQIceaTTz6xzx988MGYpbt582ZVv359bVAO5cuXV//617+09uDEiRPamPzTTz9VZ86cUZ07d2aQpP+PVNZ3331XazC6d++utVZoDdAkvPbaa+r3339Xa9asUf3791dTpkwJm8bu3bu15uPIkSP6bzQPGMVXr15d5cyZU5ftu+++U0uWLFF79+7V5Qqn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",
      "text/plain": [
       "<Figure size 600x1200 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a visualization to compare original prototypes with clustered results\n",
    "fig, axs = plt.subplots(2, 1, figsize=(6,12))  # Changed from 1,2 to 2,1 to stack vertically\n",
    "\n",
    "# Original prototypes\n",
    "axs[0].imshow(prototypes, cmap='binary', aspect='auto')\n",
    "axs[0].set_title('Original Matrix', fontsize=24)\n",
    "# axs[0].set_xlabel('Concept Index', fontsize=18)\n",
    "axs[0].set_ylabel('Prototype Index', fontsize=22)\n",
    "\n",
    "axs[0].set_xticks(ticks=np.arange(len(col_perm)), labels=np.arange(len(col_perm)), rotation=90, fontsize=18)\n",
    "axs[0].set_yticks(ticks=np.arange(len(row_perm)), labels=np.arange(len(row_perm)), rotation=0, fontsize=18)\n",
    "\n",
    "# Spectral co-clustering result\n",
    "axs[1].imshow(spectral_prototypes, cmap='binary', aspect='auto')\n",
    "axs[1].set_title('Spectral Co-Clustering', fontsize=24)\n",
    "axs[1].set_xlabel('Concept Index', fontsize=22)\n",
    "axs[1].set_ylabel('Prototype Index', fontsize=22)  # Added this back since it's needed for vertical stacking\n",
    "\n",
    "# Set ticks to original indices (after reordering)\n",
    "axs[1].set_yticks(ticks=np.arange(len(row_perm)), labels=row_perm, rotation=0, fontsize=18)\n",
    "axs[1].set_xticks(ticks=np.arange(len(col_perm)), labels=col_perm, rotation=90, fontsize=18)\n",
    "\n",
    "plt.tight_layout()\n",
    "plot_dir = os.path.join(PROJECT_ROOT, 'output', 'plots', 'comparison')\n",
    "os.makedirs(plot_dir, exist_ok=True)\n",
    "plt.savefig(os.path.join(plot_dir, f'{use_dataset}_clustering_comparison_vertical.png'), dpi=600, bbox_inches='tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b1efa29",
   "metadata": {},
   "source": [
    "## Spectral Co-Clustering\n",
    "Found 3 clusters\n",
    "1. Small ground birds\n",
    "    - sparrows, wrens\n",
    "    - camouflaged, streaky plumage\n",
    "    - (concepts) - spotted patterns, blue and red colors, unique head patterns\n",
    "2. Larger and more conspicuous birds\n",
    "    - water birds, crows/ravens, woodpeckers, blackbirds\n",
    "    - (concepts) - very large, long-legged, perching body shapes, multi-colored and striped patterns, specialised bill shapes\n",
    "3. Colourful songbirds \n",
    "    - warblers, buntings, goldfinches, hummingbirds, other brightly coloured birds\n",
    "    - (concepts) - medium to large birds, striped patterns, rounded tails\n",
    "\n",
    "## NMF\n",
    "1. darker/black birds with mixed habitats\n",
    "    - crows, ravens, blackbirds, water birds (cormorants, grebes), mixed songbirds\n",
    "    - (concepts) - orange/warm colours, striped patterns\n",
    "2. small songbirds and perching birds\n",
    "   - sparrows, warblers, buntings, finches\n",
    "   - (concepts) - blue/gray/red colours and larger sizes\n",
    "3. water birds, aerial birds, and larger birds\n",
    "    - albatross, seabirds, seagulls, hummingbirds, terns\n",
    "    - (concepts) - dark colors and specific bill shapes\n",
    "\n",
    "\n",
    "## Differences\n",
    "SCC focuses more on size-based clustering, with the small birds separated out from larger birds.\n",
    "\n",
    "SCC separates water-based vs ground-based vs arboreal a bit more clearly.\n",
    "\n",
    "SCC separates the very colourful birds more.\n",
    "\n",
    "SCC also more clearly reflects the habitats of the birds."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf1f9c68",
   "metadata": {},
   "source": [
    "# Cluster Prototypes, then Concepts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "3363cff0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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aUDVAujQoUNyww03JPvZru/gnYYWYhpcXetTooVN165dZdKkSSY/efLkMUFRv0unTp2uer339tLCSQsc14jWtG5/naqjha87DWjp3Vf1O2qe3CsCrm3oWu/OO7i5guJff/1l/ncVxlFRUcl+pv52GuwnT55sluT205S2m+4vlStX9mkksCpSpIipzHjTyokvef7oo4/krbfeMhU99wqt936cEt2HtILoTiudOtLaValwf/6v//sNlO7/OqVr4sSJZqCfBkOX66677qrPCtT2vdYIhAGkhYvW+rWmn1HeO66L+w7qep2O+tuwYYMsXbrUjPDT2rUeVPqcFpzJcc29GzhwoKmlJkV3bne5c+dOMg2dzqAFa2oFhK+0dptUQeTNO5+ZidamR48eLYsXLzYtKx2pqfPT3FvKaZXW7T9v3jzp0aOHxzqtBFWvXt38HRsbK4Hg3nvg/dnp/Y7aYtYehaTUrl1bMpP05HnWrFnmohJagdVRulqx0+2mU610HrKv2zotv8Hrr79uKsNadujoa52jq5Ud7f3w5xzdzIZAGGBasGlNcP369dKgQYN0v99Vc9Zapav7UyXX6vjXv/5llhEjRpiCVVsdc+fONV0lyQVVVxehdm2lJbgkpVKlSuZ/PXhTSkOnkbi3YNzt2rVLAk1rytr6SuqztBauB33ZsmXN4+S2l+s7aBru3avaXaq1aPfvn1wartbPTTfdZFqCWls/ePCg6eJNim4vnd/not2P2s189913p2v7a0VHu/C8Va1a1bRwlyxZYloEKVWcXNtAu3G1cHRvFeo2dK1PD9d2TKnSqL+ddsNpJTCt+6n3fqaFvvaAuAfMlH4jX6Unz1qR1e2gFy5wz5PO7XQXyPwuWLDA7GdTp071eF7LH20FZ2T7ZgWcIwywF154wbReNBAdPXr0qvVa09OCJzmuAk7Pn7jP29MuFHfaveFdu65Tp475Pz4+3vyvAcC1U7vTwlO7Ut9//31TuHrT7p3UaAGrLWCtUSZ1jtKVhnbnab40/+5ddFo46wT2QNNacatWrUyB7959o7+NVhwaN26c2E3omhvpvb20QNNu0HHjxnlscy089DvpuUoXTcO7K9LdI488Ys5Z6oRu7Xq66667knydVqbct6t2qer5I9fr07P9Nf/ui4t2q+s5Id1XNW1vmk89B600AB85csS0MF30PRrINYhq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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.spatial.distance import pdist\n",
    "from scipy.cluster.hierarchy import linkage, leaves_list\n",
    "\n",
    "# Compute Jaccard distance between prototypes\n",
    "dist_prototypes = pdist(prototypes, metric=\"jaccard\")\n",
    "link_prototypes = linkage(dist_prototypes, method=\"average\")\n",
    "\n",
    "# Get ordered row indices\n",
    "row_order = leaves_list(link_prototypes)\n",
    "\n",
    "# # Compute Jaccard distance between concepts (columns)\n",
    "# dist_concepts = pdist(prototypes.T, metric=\"jaccard\")\n",
    "# link_concepts = linkage(dist_concepts, method=\"average\")\n",
    "\n",
    "# # Get ordered column indices\n",
    "# col_order = leaves_list(link_concepts)\n",
    "\n",
    "# Reorder matrix\n",
    "prototypes_reordered = prototypes[row_order, :]\n",
    "\n",
    "plt.figure(figsize=(5,5))\n",
    "sns.heatmap(prototypes_reordered, cmap='Greys', cbar=False, linewidths=0.5, linecolor='lightgray')\n",
    "plt.xlabel(\"Concepts\")\n",
    "plt.ylabel(\"Prototypes\")\n",
    "plt.title(\"Clustered Prototype-Concept Heatmap\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "ac87f6c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABv0AAAJOCAYAAACUQctNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX0FJREFUeJzt3QeYXGXZN/BnQyCJIVl6h4CA9I4gRRBBQJAiKKigFOUVCUWKAq9vKEJALAgKIqBiA4QPgQgqEXkp0juISACpgjSBLDVAMt91H7/Zb3ezSXYnk519zvn9rmsIO+XMOTOzc/773M+5T1utVqslAAAAAAAAIFtDWr0CAAAAAAAAwOxR9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/SDTC277LJp7733Tjk67rjjUltbW3rppZdavp2xHrE+zRTrG+udoyeeeKJ4TX7+85+3elUAgAbyVc4if8Q2RB7JUc75HACq7LrrrisySPxbRXNibAxoHUU/GEQDHHfeeWevt3/kIx9Jq6+++oCvF911dHSk448/Pq211lpp3nnnTSNGjCjelyOPPDI9++yzA7YeP/rRjxTlAKAXf/3rX9OnPvWpNGbMmDR8+PC05JJLpo997GPphz/8YatXLb355pvFYMpgGUyK9dhll13SYostluaZZ560yCKLpB122CFdeumlTX+uqVOnpvPOO6/ItAsssEAaNmxYUSDbZ599Zph/54Q//OEPBrQAoEljWJG1nnnmmT6NYcV+Px6z1VZb9brMc889t7i959hYfVJTb5cf//jHfVrfyy67LH384x9PCy20UJF5llhiibTbbrul//3f/00D5eabby625dVXX025qk8Sr1/mnnvu4jXdeOON03//93+np556quFlx5havD733ntvU9cZqmpoq1cAaMykSZPSkCHlr9sPlu187LHHinAaIebTn/50+q//+q8iLN5///3ppz/9aREiH3744QEr+kWwmhMzyWOQ9K233irCGwDkJAZTtthii7TMMsuk/fbbryhmPf300+nWW29Np59+ejrooINaXvSLyUP1wbBWOvbYY9M3v/nNtOKKK6Yvf/nLxf7/3//+d1EU23XXXdP555+fPve5zzXluSJX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WIwTxXhCiOJYHMk3s9OMRPGo58Sh2LfOyI033lg8JrJa3HdOiu2P7BDbENko9t0xNnbbbbcV2xu5L04HE8XN6HBQP2KxPiEsxspiUlaMkUWOiYlBkfWisBc5pOuEtphoHUWzyJtxtF2MB8VYTBTvYptjfCeOtIvzXMdzxfNefvnlnY+P5UeBMdYr2prGeQ233377prwOG220UfGe1idc1U+VE88fRbv4vES2jslSMXYVk5viMxPrG10oYvJ+rH+M+YV629VmZmGojBrQcuedd14tfh1ndllttdW6PWbMmDG1vfbaq/PnE044oTZy5Mjaww8/3O1+Rx11VG2uueaqPfXUU8XPjz/+eLG80aNH11544YVu933vvfdqU6ZM6XbdK6+8Ult00UVr++67b+d1M1vGZpttVhs1alTtySef7Hb9tGnTOv//2GOPLR7fdZnhk5/8ZG3BBRec6XYec8wxxWMvvfTS6V7H+nP0dTtCLCvWZ2bWWWedWnt7e62vYn1jveuuvfba4nni367qr2O8//V1jJ+/853vzHT58VnYfPPNp7u+GZ+BnutU35647pvf/OZ0r8t6663X+fNvf/vb4n6nnXZa53VTp06tffSjH51umQDQbH/605+K/V1cNtpoo9rXv/712sSJE2vvvPPOdPet56s777yz87rILsOHDy/ySN0Xv/jF2uKLL1576aWXuj3+M5/5TJEN3nzzzeLnn/3sZ8XyTj311BnmkxdffHGGuaO+r419dk/15+jq5JNPrrW1tXXLW/V8NTMTJkwo7vP973+/1hexT4/7//rXv+68Ll7PeH3nnXfeWkdHx0wff+ihhxaPv+eee/qViSOP1M3oNeuZEddaa63a9ttvP9Pljx07ttfX6C9/+Utx/fnnn9/t+quuumq66+N547q4bVbrVN+erbbaqlsWjtclPqevvvpq8fNzzz1XGzp0aG3nnXfutrzjjjuueHzXZQJAq9X3b3fccUftH//4R7EPO/jggztvj/GK3sawYj8d4zWLLbZYMX4RHnzwwWJZ119/fbfl9sw3PS9dx1x6c/rppxf3u+yyy/q0Tb2N2/Tcr3fdvq5jMjvttNN029tTjPP0zDjhiSeeKDLB+PHju13/17/+tXhdu14fzxnL+PGPf9ztvr/61a9qQ4YMKfJMV3G/uP9NN91U/HzvvfcWPx9wwAHd7ve5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f1FYjfZOMfkrJjj1zDTx2n7kIx8p8k+8tnfeeWexrgceeGDnferFyFiXeO9jICmeO4qXX/7yl4uW6pFXo/AbOS+OBo11jIGlmAQ2p8S5nKNFarxWO+64Y3E+wtjOaPUV2ylDAZCDmAwd5/aLI8dWW221md43skccjT8nxRhJjNnE/jXyXOzLF1tssaIoGadUicwWWXFmGSSyROyXY5wm8kwUCnueEy9yQyw3xolinx6Fxpi4E+NR9axUzyDxGkX2iJwRXaViWTG2E0cExphNjKvEY2IcK8aDIotFDpyZ6KZw8cUXF3kptjPWIyYzRcaK6yM3ReeLOKIycl9k3jgX3sYbb1zkvv52Z4ocHK9DTN6KIt0dd9xR5NPIK/H+d21/H7kvzrscOTyeLzJotFPveaRkvA7zzTdfMXYX2x9FwMjfcyILQyXUgJY777zzYspK7Y477uj19s0337y22mqrdbtuzJgxtb322qvbda+99lrt6KOPrq2wwgq1eeaZp7bQQgvVNt5449p3v/vd2jvvvFPc5/HHHy+e6zvf+c50zzNt2rTaSSedVCx72LBhtXXWWad25ZVXFs8T19XNbBnhgQceqH3yk5+szTfffLXhw4fXVlpppdq4ceM6bz/22GOLx7/44ou9vg6x/Jlt57///e/agQceWFtyySWL7VxqqaWK+7z00kv92o4Qzxfr0xevvPJK7ZhjjqmtscYatfe9733Ftq2++urFa/6vf/2r8369PU9s66677lo8bv755699+ctfLl6neP7Y7hDrP3bs2NrKK69cGzlyZK29vb224YYb1i6++OJuy3ruuedq22+/fW3UqFHF4+Pz0azPQP22+jrVtyfWp6f6+9hzOz/3uc8V6xbrv/fee9duuumm4n6/+c1v+vQ6A0Aj/vjHP9b23XffYj8677zzFvvB2B8edNBBteeff77bfWO/FPvcX//617UVV1yxMy9ce+210y03Hhv3XXrppWtzzz13bbHFFqttueWWtXPOOafb/d58883aN77xjdpyyy3Xeb9PfepTtX/84x+d97n55ptr6623XrFuXTPIjPa14cEHH6xttdVWxTbFfn2//far3XfffdPtr3vbL8/MNddcU9tpp51qiyyySG3o0KG1hRdeuLbDDjvUJkyYMN3277PPPsVzx3pHDur6vH3x3nvv1X7yk5/UPvzhDxf5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AGicLAUA0MSi3y9/+ct0zjnnpD322CPNNddcndevtdZa6aGHHurv4gAAKkWWAgBonCwFANDEot8zzzyTVlhhhV7bK7z77rv9XRwAQKXIUgAAjZOlAACaWPRbddVV01/+8pfprr/kkkvSOuus09/FAQBUiiwFANA4WQoAYMaGpn465phj0l577VXMrIpZVJdeemmaNGlS0V7hyiuv7O/iAAAqRZYCAGicLAUA0MQj/Xbaaad0xRVXpD//+c9p5MiRRdj6+9//Xlz3sY99rL+LAwCoFFkKAKBxshQAwIy11Wq1WspUR0dHam9vb8lzZ/yy0UdtbW2pSnymy61Vn2efK8qknjsmT56cRo8encqgjNsEVWMfX25V+5sk+GyVVxlzh3EpAGitKublybPIUv0+0g8AAAAAAADI8Jx+888/f58rpi+//PLsrhMAQKnIUgAAjZOlAACaWPQ77bTTOv//3//+dzrxxBPTNttskzbaaKPiultuuSVNnDgxjRs3ro9PCwBQHbIUAEDjZCkAgDl0Tr9dd901bbHFFunAAw/sdv0ZZ5xRnET58ssvTwNF73TmpKr1A/aZLjfn+4HBcx6awZilynRuHaga+/hyq9rfJMFnq7zKnKVawe8KAFQzL09u9jn9YubUtttuO931cV2EKwAAZkyWAgBonCwFAJCaV/RbcMEF04QJE6a7Pq6L2wAAmDFZCgCgcbIUAMBsntOvq+OPPz596UtfStddd13acMMNi+tuu+22dNVVV6Vzzz23v4sDAKgUWQoAoHGyFABAE4t+e++9d1pllVXSD37wg3TppZcW18XPN954Y2fYAgCgd7IUAEDjZCkAgBlrqw2SM/9+61vfSkcffXQ65JBD0mmnndanxzhhMnNS1U4C6jNdbq36PPtcUSb13DGrEybnmKUG6zYBs2YfX25V+5sk+GyV12DPHcalACA/VczLk2eRpfp9pF+YNm1aevTRR9MLL7xQ/H9Xm222Wb+Xd8cdd6Szzz47rbnmmo2sDgBAVmQpAIDGyVIAAE0q+t16663pc5/7XHryySenm1UUVdWpU6f2a3mvv/562mOPPYq+6yeeeGJ/VwcAICuyFABA42QpAIAZG5L6af/990/rr79+euCBB9LLL7+cXnnllc5L/NxfY8eOTdtvv33aaqutZnnfKVOmFK0Tul4AAHIiSwEANE6WAgBo4pF+jzzySLrkkkvSCiuskGbXb37zm3T33XcXbRT64uSTT07HH3/8bD8vAECryFIAAI2TpQAAmnik34Ybblj0TZ9dTz/9dHFy5PPPPz8NHz68T4+JEyrHSQrrl1gGAEBOZCkAgMbJUgAATTzS76CDDkqHH354eu6559Iaa6yR5p577m639/Wkx3fddVdxwuV1112387rou37DDTekM844o2iZMNdcc3V7zLBhw4oLAECuZCkAgMbJUgAAM9ZW63nW41kYMmT6gwPjRMmxmP6cMPm1114rTrrc1T777JNWXnnldOSRR6bVV199lsuI3unt7e2pFfr5spGh+DxXic90ubXq8+xzRZnUc0fM6h49enTDyxmMWWp2twloHfv4cqva3yTBZ6u8ypylWsHvCgBUMy9PnkWW6veRfo8//nhqhlGjRk0XoEaOHJkWXHDBPgUrAIAcyVIAAI2TpQAAUvOKfmPGjOnvQwAA+H9kKQCAxslSAABNKPr97ne/69P9dtxxx9So6667ruHHAgAMZrIUAEDjZCkAgCYW/XbeeedZ3qc/vdMBAKpElgIAaJwsBQDQxKLftGnT+npXAAB6kKUAABonSwEAzNqQPtwHAAAAAAAAGMQU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAFSx6Pfqq6+mn/zkJ+noo49OL7/8cnHd3XffnZ555plmrx8AQOnIUgAAjZOlAAB6NzT10/3335+22mqr1N7enp544om03377pQUWWCBdeuml6amnnkq//OUv+7tIAIDKkKUAABonSwEANPFIv8MOOyztvffe6ZFHHknDhw/vvH677bZLN9xwQ38XBwBQKbIUAEDjZCkAgCYW/e6444705S9/ebrrl1xyyfTcc8/1d3EAAJUiSwEANE6WAgBoYtFv2LBhqaOjY7rrH3744bTwwgv3d3EAAJUiSwEANE6WAgBoYtFvxx13TN/85jfTu+++W/zc1tZW9Ew/8sgj06677trfxQEAVIosBQDQOFkKAKCJRb/vfe976fXXX0+LLLJIeuutt9Lmm2+eVlhhhTRq1Kg0fvz4/i4OAKBSZCkAgMbJUgAAMzY09VN7e3u6+uqr04033pjuv//+Imitu+66aautturvogAAKkeWAgBonCwFADBjbbVarZYyFT3cI+y1QsYvG30ULUKqxGe63Fr1efa5okzquWPy5Mlp9OjRqQzKuE1QNfbx5Va1v0mCz1Z5lTF3GJcCgNaqYl6ePIss1e/2nuGaa65Jn/jEJ9Lyyy9fXOL///znP8/OegIAVIYsBQDQOFkKAKBJRb8f/ehHadttty16pR9yyCHFJaqK2223XTrzzDP7uzgAgEqRpQAAGidLAQA0sb3nUkstlY466qh04IEHdrs+gtVJJ52UnnnmmTRQytgaAqp2SLKWJAND6y/KppXflbObO2QpgPzIUgPH30Pl1azcIUsBZSBbDIyq5Yoqvset0jaIx6X6faTfq6++Wsyo6mnrrbcungwAgBmTpQAAGidLAQCk5hX9dtxxx3TZZZdNd/2ECROKHuoAAMyYLAUA0DhZCgBgxoamflp11VXT+PHj03XXXZc22mij4rpbb7013XTTTenwww9PP/jBDzrve/DBB/d38QAApSZLAQA0TpYCAGjiOf2WW265Pvc0feyxx9KcpHc6ZVS1XtP6TA8MveIpm8HcO31WZCmA/MhSA8ffQ+XVrNwhSwFlIFsMjKrliiq+x63SNojHpfp9pN/jjz8+u+sEAFBZshQAQONkKQCAJp7T79prr+3vQwAA+H9kKQCAxslSAABNLPptu+22afnll08nnnhievrpp/v7cACASpOlAAAaJ0sBADSx6PfMM8+kAw88MF1yySXp/e9/f9pmm23SxRdfnN55553+LgoAoHJkKQCAxslSAABNLPottNBC6dBDD0333ntvuu2229IHPvCBdMABB6QlllgiHXzwwem+++6bM2sKAFACshQAQONkKQCAJhb9ulp33XXT0UcfXcywev3119PPfvaztN5666UPf/jD6W9/+9vsLBoAoPRkKQCAxslSAABNKPq9++67RRuF7bbbLo0ZMyZNnDgxnXHGGen5559Pjz76aHHdpz/96UYWDQBQerIUAEDjZCkAgN611Wq1WuqHgw46KF144YUpHvb5z38+felLX0qrr756t/s899xzRVuFadOmpTmpo6Mjtbe3p8mTJ6fRo0fP0eeCgdLW1paqpJ9fQWT2ufL+UsbvytnNHbIUQH5kqYHj76HyalbukKWAMpAtBkbVckUV3+NWaRvE41JD+7vABx98MP3whz9Mu+yySxo2bNgM+6tfe+21/V00AEDpyVIAAI2TpQAAmnik3w033JA23njjNHRo93rhe++9l26++ea02WabpYFiRhVlVLUZKGafDAwzyCibwTyjalZkKYD8yFIDx99D5dWs3CFLAWUgWwyMquWKKr7HrdI2iMel+n1Ovy222CK9/PLLvT5R3AYAwIzJUgAAjZOlAABS84p+USnurYr573//O40cObK/iwMAqBRZCgCgcbIUAECa/XP6Ra/0EMFq77337tY3ferUqen+++8v2isAADA9WQoAoHGyFABAE4t+0aO8PqNq1KhRacSIEZ23zTPPPOlDH/pQ2m+//fq6OACASpGlAAAaJ0sBADSx6HfeeecV/y677LLpiCOO0DIBAKAfZCkAgMbJUgAAs9ZWiylSDXjxxRfTpEmTiv9faaWV0sILL5wGWkdHRzHTK07WPHr06AF/fpgTejs3QZk1+BVEJp8r7y9l/K5sVu6QpQDyIUsNHH8PlVezc4csBeRMthgYVcsVVXyPW6VtEI9LDenvAt9888207777psUXXzxtttlmxWWJJZZIX/ziF4vbAACYMVkKAKBxshQAQGpe0e/QQw9N119/fbriiivSq6++WlwmTJhQXHf44Yf3d3EAAJUiSwEANE6WAgBoYnvPhRZaKF1yySXpIx/5SLfrr7322rTbbrsV7RUGijYKlFHVDjt3yPnA0DaCshnMbRRmRZYCyI8sNXD8PVRezcodshRQBrLFwKharqjie9wqbWVr77noootOd/0iiyyijQIAwCzIUgAAjZOlAABS84p+G220UTr22GPT22+/3XndW2+9lY4//vjiNgAAZkyWAgBonCwFADBjQ1M/nXbaaWnbbbdNSy21VFprrbWK6+677740fPjwNHHixP4uDgCgUmQpAIDGyVIAAE08p1+Idgnnn39+euihh4qfV1lllbTHHnukESNGpIGkdzplVLVe0/pMDwy94imbwdw7vS9kKYC8yFIDx99D5dXM3CFLAbmTLQZG1XJFFd/jVmkbxONS/T7S74Ybbkgbb7xx2m+//bpd/9577xW3bbbZZo2tKQBABchSAACNk6UAAJp4Tr8tttgivfzyy71WF+M2AABmTJYCAGicLAUA0MSiXxwe2tuhi//+97/TyJEj+7s4AIBKkaUAABonSwEApNlv77nLLrsU/0aw2nvvvdOwYcM6b5s6dWq6//77i/YKAABMT5YCAGicLAUA0MSiX5yYuD6jatSoUd1OjjzPPPOkD33oQ9P1UwcA4D9kKQCAxslSAABNLPqdd955xb/LLrtsOuKII7RMAADoB1kKAKBxshQAwKy11WKKVANefPHFNGnSpOL/V1pppbTwwgungdbR0VHM9IqTNY8ePXrAnx/mhN7OTVBmDX4FkcnnyvtLGb8rm5U7ZCmAfMhSA8ffQ+XV7NwhSwE5ky0GRtVyRRXf41ZpG8TjUkP6u8A333wz7bvvvmnxxRdPm222WXFZYokl0he/+MXiNgAAZkyWAgBonCwFAJCaV/Q79NBD0/XXX5+uuOKK9OqrrxaXCRMmFNcdfvjh/V0cAEClyFIAAI2TpQAAmtjec6GFFkqXXHJJ+shHPtLt+muvvTbttttuRXuFgaKNAmVUtcPOHXI+MLSNoGwGcxuFWZGlAPIjSw0cfw+VV7NyhywFlIFsMTCqliuq+B63SlvZ2nsuuuii012/yCKLaKMAADALshQAQONkKQCA1Lyi30YbbZSOPfbY9Pbbb3de99Zbb6Xjjz++uA0AgBmTpQAAGidLAQDM2NDUT6eddlradttt01JLLZXWWmut4rr77rsvDR8+PE2cOLG/iwMAqBRZCgCgcbIUAEATz+kXol3C+eefnx566KHi51VWWSXtscceacSIEWkg6Z1OGVWt17Q+0wNDr3jKZjD3Tu8LWQogL7LUwPH3UHk1M3fIUkDuZIuBUbVcUcX3uFXaBvG4VL+O9Hv33XfTyiuvnK688sq03377NWP9AAAqQ5YCAGicLAUA0MRz+s0999zdeqYDANB3shQAQONkKQCAJhb9wtixY9Mpp5yS3nvvvf4+FACg8mQpAIDGyVIAAKk57T3DHXfcka655pr0pz/9Ka2xxhpp5MiR3W6/9NJL+7tIAIDKkKUAABonSwEANLHoN99886Vdd921vw8DAECWAgCYLbIUAEATi37nnXdefx8CAMD/I0sBADROlgIAaMI5/aZNm1b0TN9kk03SBz/4wXTUUUelt956q68PBwCoNFkKAKBxshQAQBOLfuPHj0///d//neadd9605JJLptNPP704eTIAALMmSwEANE6WAgCYtbZarVbrw/3SiiuumI444oj05S9/ufj5z3/+c9p+++2LWVVDhvS5dthUHR0dqb29PU2ePDmNHj26JesAzdbW1paqpI9fQWT6ufL+UsbvykZzhywFkC9ZauD4e6i8Zjd3yFJAmcgWA6NquaKK73GrtA3icak+n9PvqaeeStttt13nz1tttVWxYc8++2xaaqmlUitFwBpofnnK/8tTtfe4atsLMNAGc5YC8mXAaGBUbXtbqWqvtd/hvpOlgDmhikWhKmnV/q6KnyuZZvDo81So9957Lw0fPrzbdXPPPXd6991358R6AQCUiiwFANA4WQoAYNaG9qdiuvfee6dhw4Z1Xvf222+n/fffP40cObLzuksvvbSviwQAqAxZCgCgcbIUAEATi3577bXXdNftueeefX04AEClyVIAAI2TpQAAZq2tlnHT0/oJk1sh45ctK1U8p5/+x8wJPleUzWA+YXKOWapM2wRVYx8PeavS73AZc0cZtwmqpmrnXpPhBoYx7YFTte0Ns8odfT6nHwAAAAAAADA4KfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmWt50e+ZZ55Je+65Z1pwwQXTiBEj0hprrJHuvPPOVq8WAEAWZCkAgMbJUgBAmQxt5ZO/8soraZNNNklbbLFF+uMf/5gWXnjh9Mgjj6T555+/lasFAJAFWQoAoHGyFABQNi0t+p1yyilp6aWXTuedd17ndcstt1wrVwkAIBuyFABA42QpAKBsWtre83e/+11af/3106c//em0yCKLpHXWWSede+65M7z/lClTUkdHR7cLAEBVyVIAAI2TpQCAsmlp0e+xxx5LZ511VlpxxRXTxIkT01e+8pV08MEHp1/84he93v/kk09O7e3tnZeYjQUAUFWyFABA42QpAKBs2mq1Wq1VTz7PPPMUM6puvvnmzusiXN1xxx3plltu6XVGVVzqYkZVqwJWC1+2Smlra2vZc7fqPW7VNvtMl5vPFWXTyv3D5MmT0+jRo9Ng0KwsNZi2Cegf+3jIW5V+hyN3RKFsMOUOWQpo5d+WrSDDDQxj2gOnatsbZpU7Wnqk3+KLL55WXXXVbtetssoq6amnnur1/sOGDSs2pusFAKCqZCkAgMbJUgBA2bS06LfJJpukSZMmdbvu4YcfTmPGjGnZOgEA5EKWAgBonCwFAJRNS4t+hx56aLr11lvTSSedlB599NF0wQUXpHPOOSeNHTu2lasFAJAFWQoAoHGyFABQNi09p1+48sor09FHH50eeeSRtNxyy6XDDjss7bfffv3qB98K+h8PDP2PB47PdLn5XFE2g7l3eo5ZarBtE9B39vGQtyr9Dg/W3CFLQbU5px9zgjHtgVO17Q2zyh0tL/rNDkW/8vMFOXB8psvN54qyGczhKicGqiB/9vGQtyr9Dpcxd5Rxm6BqFP2YE4xpD5yqbW+YVe5oaXtPAAAAAAAAYPYp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBwAAAAAAAJlT9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOaGtnoFYGZqtVqrV4E5rK2tLVWJzzQAUAZVy3BVy45VfH9b9Vp7jwGAMuzjqzbmWWvB9nZ0dKT29vZZ3s+RfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmVP0AwAAAAAAgMwp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBwAAAAAAAJlT9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmVP0AwAAAAAAgMwp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBwAAAAAAAJlT9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADI3NBUApMnT06jR48e0Odsa2tLrVCr1VryvAycqr3HVdte3x0AQDNVbR8vS5V/e1v1HrfqeQFgIFVtf1e1DFfVbW6FtkH8u+RIPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBwAAAAAAAJlT9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmWtp0W/q1Klp3LhxabnllksjRoxIyy+/fDrhhBNSrVZr5WoBAGRBlgIAaJwsBQCUzdBWPvkpp5ySzjrrrPSLX/wirbbaaunOO+9M++yzT2pvb08HH3xwK1cNAGDQk6UAABonSwEAZdPSot/NN9+cdtppp7T99tsXPy+77LLpwgsvTLfffnsrVwsAIAuyFABA42QpAKBsWtrec+ONN07XXHNNevjhh4uf77vvvnTjjTemj3/8473ef8qUKamjo6PbBQCgqmQpAIDGyVIAQNm09Ei/o446qghIK6+8cpprrrmKXurjx49Pe+yxR6/3P/nkk9Pxxx8/4OsJADAYyVIAAI2TpQCAsmnpkX4XX3xxOv/889MFF1yQ7r777qKH+ne/+93i394cffTRafLkyZ2Xp59+esDXGQBgsJClAAAaJ0sBAGXTVqvVaq168qWXXrqYVTV27NjO60488cT061//Oj300EOzfHzMxoqTK0fQGj16dBpIbW1tqRVa+HYBTeC7A/L+XQqtyB1lzFIAjZClyq+V+3gGxmDKHbIUYL9Tbq3KcK38XMmtA2Mwj0u19Ei/N998Mw0Z0n0Vop3CtGnTWrZOAAC5kKUAABonSwEAZdPSc/rtsMMORa/0ZZZZJq222mrpnnvuSaeeemrad999W7laAABZkKUAABonSwEAZdPS9p6vvfZaGjduXLrsssvSCy+8kJZYYon02c9+Nh1zzDFpnnnmmeXjtfcEcuO7A8rfRmEg5ZylABohS5WfNmvlN5hyhywF2O+Um/aeVHFcqqVFv9ml6AfkxncHlD9c5cRAFZAbWar8DL6WX5lyhywF+bPfKTdFP6o4LtXSc/oBAAAAAAAAs0/RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmVP0AwAAAAAAgMwp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMje01SuQq1qt1upVADLku6P82traWvK8PlsAVGF/1yr275TtPa7a7zDk+LtiHzAwvM7MCT5XtJIj/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmVP0AwAAAAAAgMwp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBwAAAAAAAJlT9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAAAyp+gHAAAAAAAAmVP0AwAAAAAAgMwp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBwAAAAAAAJlT9AMAAAAAAIDMKfoBAAAAAABA5hT9AAAAAAAAIHOKfgAAAAAAAJA5RT8AAAAAAADInKIfAAAAAAAAZE7RDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzQ1PGarVa8W9HR0erVwUAWsq+cODzRxnIUgCDm+/n8qvieyxLQd/4XAHQSJbKuuj32muvFf8uvfTSrV4VAGip9vb2Vq9CZUT+KMvrLUsBDG5l2d8wY1V8j2Up6Juy/J4AMLBZqq2W8RSradOmpWeffTaNGjUqtbW19Xu2TISyp59+Oo0ePTqVXdW2t4rbbHvLzfaWX9W2OcftjcgUwWqJJZZIQ4aUo0O6LNV3VdveKm6z7S0321t+VdvmHLdXlsr/PZwdVdveKm6z7S0321t+VdvmjhJnqayP9IsNW2qppWZrGfGG5vKmNkPVtreK22x7y832ll/Vtjm37S3bbFtZqv+qtr1V3GbbW262t/yqts25ba8slf97OLuqtr1V3GbbW262t/yqts2jS5ilyjG1CgAAAAAAACpM0Q8AAAAAAAAyV9mi37Bhw9Kxxx5b/FsFVdveKm6z7S0321t+Vdvmqm1vGVXtPaza9lZxm21vudne8qvaNldte8uoau9h1ba3ittse8vN9pZf1bZ5WIm3t60WZ/8DAAAAAAAAslXZI/0AAAAAAACgLBT9AAAAAAAAIHOKfgAAAAAAAJC5yhb9zjzzzLTsssum4cOHpw033DDdfvvtqYxOPvnk9MEPfjCNGjUqLbLIImnnnXdOkyZNSlXxrW99K7W1taWvfvWrqayeeeaZtOeee6YFF1wwjRgxIq2xxhrpzjvvTGU1derUNG7cuLTccssV27v88sunE044IZXl9KQ33HBD2mGHHdISSyxRfHYvv/zybrfHdh5zzDFp8cUXL7Z/q622So888kgq4/a+++676cgjjyw+0yNHjizu84UvfCE9++yzqazvb1f7779/cZ/TTjst5awv2/z3v/897bjjjqm9vb14r2O/9dRTT7Vkfek7WaoaZKnykaVkKVkqL7JUeclS1SBLlY8sJUvJUnm5oYJZqpJFv4suuigddthh6dhjj0133313WmuttdI222yTXnjhhVQ2119/fRo7dmy69dZb09VXX118WW299dbpjTfeSGV3xx13pLPPPjutueaaqaxeeeWVtMkmm6S55547/fGPf0wPPvhg+t73vpfmn3/+VFannHJKOuuss9IZZ5xRfCHHz9/+9rfTD3/4w1QG8bsZ30nxB2BvYlt/8IMfpB//+MfptttuK3ZE8f319ttvp7Jt75tvvll8R0eYjn8vvfTS4o/D2AmX9f2tu+yyy4rv7QgkuZvVNv/jH/9Im266aVp55ZXTddddl+6///7iPY/BDwYvWUqWKgtZSpaSpfIiS01PlsqTLCVLlYUsJUvJUnmRpSqSpWoVtMEGG9TGjh3b+fPUqVNrSyyxRO3kk0+uld0LL7wQ005q119/fa3MXnvttdqKK65Yu/rqq2ubb7557ZBDDqmV0ZFHHlnbdNNNa1Wy/fbb1/bdd99u1+2yyy61PfbYo1Y28bt62WWXdf48bdq02mKLLVb7zne+03ndq6++Whs2bFjtwgsvrJVte3tz++23F/d78skna2Xd3n/+85+1JZdcsvbAAw/UxowZU/v+979fK4vetnn33Xev7bnnni1bJxojS8lSZSFL/YcsJUvlSJb6D1kqT7KULFUWstR/yFKyVI5kqfJmqcod6ffOO++ku+66qzj0uG7IkCHFz7fccksqu8mTJxf/LrDAAqnMYhbZ9ttv3+19LqPf/e53af3110+f/vSnizYZ66yzTjr33HNTmW288cbpmmuuSQ8//HDx83333ZduvPHG9PGPfzyV3eOPP56ee+65bp/rOOw8WsFU4fur/h0Wh+LPN998qYymTZuWPv/5z6evfe1rabXVVktlF9v7+9//Pn3gAx8oZgbG91h8nmfWXoLWk6VkqTKRpWQpWapcZClZKgeylCxVJrKULCVLlYsstUgpslTlin4vvfRS0Xt50UUX7XZ9/BxfWmX/EEcP8TjsfvXVV09l9Zvf/KY45Dr6xpfdY489VrQUWHHFFdPEiRPTV77ylXTwwQenX/ziF6msjjrqqPSZz3ymOOQ62kdEoIzP9R577JHKrv4dVcXvrxCtIqKX+mc/+9k0evToVEbRFmTo0KHF73EVRPui119/vTjPxbbbbpv+9Kc/pU9+8pNpl112KdoAMTjJUrJUmchSslRVvr+CLFU+slSeZClZqkxkKVmqKt9fQZYqnxdKmqWGtnoFGNhZRg888EAx+6Ssnn766XTIIYcUfeKz7rvbj8AcM6pOOumk4ucIGvEeR1/tvfbaK5XRxRdfnM4///x0wQUXFDNO7r333iJcRY/psm4z/zl58m677VacMDr+oCijmO17+umnF38cxqyxKojvsLDTTjulQw89tPj/tddeO918883F99jmm2/e4jWE7mSp8pGlZKmqkKXKSZYiN7JU+chSslRVyFLlNK2kWapyR/ottNBCaa655krPP/98t+vj58UWWyyV1YEHHpiuvPLKdO2116allloqlVV8OUWFft111y1mJcQlqvJxgtn4/5hNVyaLL754WnXVVbtdt8oqq6SnnnoqlVUcXl6fVbXGGmsUh5zHl3IVZtDVv6Oq9v1VD1ZPPvlk8YdTWWdT/eUvfym+v5ZZZpnO76/Y5sMPPzwtu+yyqaz75NjOqn2P5U6WkqXKRJaSparw/SVLyVIMLrKULFUmspQsVYXvL1lKlspN5Yp+88wzT1pvvfWK3stdK7rx80YbbZTKJmYfRLC67LLL0v/+7/+m5ZZbLpXZlltumf76178Ws2zql5hxFIfYx/9HsC6TaIkxadKkbtdFT/ExY8aksnrzzTeL8x10Fe9rfWZGmcXvb4Sort9fHR0d6bbbbivl91fXYPXII4+kP//5z2nBBRdMZRV/KNx///3dvr9ipmD8QRFtUsq6T/7gBz9Yue+x3MlSslSZyFL/IUvJUmUgS1Xneyx3spQsVSay1H/IUrJUGchS5fkeq2R7z8MOO6w43Dp2uhtssEE67bTT0htvvJH22WefVMbWCXG4+YQJE9KoUaM6+yvHSVZHjBiRyia2sWdf+JEjRxZfyGXsFx8zieIEwtFGIXZAt99+ezrnnHOKS1ntsMMOafz48cWsk2ijcM8996RTTz017bvvvqkMoo/0o48+2u0kybGTjZOcxzZHy4gTTzyx6JcfYWvcuHHFDnjnnXdOZdvemDH4qU99qmgrEDNCY0Zk/Tssbo8dc9ne357hMc4PEIF6pZVWSrma1TZHeNx9993TZpttlrbYYot01VVXpSuuuCJdd911LV1vZk6WkqXKQpaSpWSpvMhSslRZyFKyVFnIUrKULJUXWSpVI0vVKuqHP/xhbZlllqnNM888tQ022KB266231soo3uLeLuedd16tKjbffPPaIYccUiurK664orb66qvXhg0bVlt55ZVr55xzTq3MOjo6ivczfn+HDx9ee//731/7xje+UZsyZUqtDK699tpef2f32muv4vZp06bVxo0bV1t00UWL93zLLbesTZo0qVbG7X388cdn+B0Wjyvj+9vTmDFjat///vdrOevLNv/0pz+trbDCCsXv9FprrVW7/PLLW7rO9I0sJUuVhSwlS8lS+ZClZKkykaVkqbKQpWQpWSofslSqRJZqi/+0uvAIAAAAAAAANK5y5/QDAAAAAACAslH0AwAAAAAAgMwp+gEAAAAAAEDmFP0AAAAAAAAgc4p+AAAAAAAAkDlFPwAAAAAAAMicoh8AAAAAAABkTtEPAAAAAAAAMqfoBzCAnnjiidTW1pbuvffeVq8KAEB2ZCkAgMbJUlB+in5AQ5577rl00EEHpfe///1p2LBhaemll0477LBDuuaaa1JuPvKRj6SvfvWrTbsfAMCsyFIAAI2TpQB6N3QG1wPMdFbQJptskuabb770ne98J62xxhrp3XffTRMnTkxjx45NDz30UKtXEQBg0JKlAAAaJ0sBzJgj/YB+O+CAA4pWALfffnvadddd0wc+8IG02mqrpcMOOyzdeuutnfd76qmn0k477ZTmnXfeNHr06LTbbrul559/vvP24447Lq299trpV7/6VVp22WVTe3t7+sxnPpNee+21zvtMmzYtffvb304rrLBCMXNrmWWWSePHj++8/emnny6WG0FvgQUWKJ4vwl/d3nvvnXbeeed0/PHHp4UXXrhYj/333z+98847nbdff/316fTTTy+2KS5dHz8zsc4nnXRS2nfffdOoUaOKdTvnnHO63Sdeo3XWWScNHz48rb/++umee+6ZbjkPPPBA+vjHP168Tosuumj6/Oc/n1566aXituuuuy7NM8886S9/+Uvn/eP1WGSRRbq9lgBAPmSp/5ClAIBGyFL/IUsBvVH0A/rl5ZdfTldddVUxc2rkyJHT3R4hpx6KIujE/SO8XH311emxxx5Lu+++e7f7/+Mf/0iXX355uvLKK4tL3Pdb3/pW5+1HH3108fO4cePSgw8+mC644IIigISYxbXNNtsUwSbCx0033VQElG233bYzPIVo7fD3v/+9CCoXXnhhuvTSS4uwFSJUbbTRRmm//fZL//rXv4pLtIToq+9973udoSlC51e+8pU0adKk4rbXX389feITn0irrrpquuuuu4owecQRR3R7/Kuvvpo++tGPFgHszjvvLF7bCE0RGLu2bojANXny5OJ54rX4yU9+0vk6AAD5kKW6k6UAgP6QpbqTpYDp1AD64bbbbqvFV8ell1460/v96U9/qs0111y1p556qvO6v/3tb8Vjb7/99uLnY489tva+972v1tHR0Xmfr33ta7UNN9yw+P+4ftiwYbVzzz231+f41a9+VVtppZVq06ZN67xuypQptREjRtQmTpxY/LzXXnvVFlhggdobb7zReZ+zzjqrNu+889amTp1a/Lz55pvXDjnkkFlue8/7jRkzprbnnnt2/hzrscgiixTLD2effXZtwQUXrL311lvdnjteg3vuuaf4+YQTTqhtvfXW3Z7n6aefLu4zadKkzm1ae+21a7vttltt1VVXre23336zXFcAYHCSpWQpAKBxspQsBcycI/2AfqnVYr8/azGDKWYmdZ2dFDOLYsZV3Na1FUHMiKpbfPHF0wsvvNC5jClTpqQtt9yy1+e477770qOPPlo8PmZSxSVaKbz99tvFTK26tdZaK73vfe/r/DlmUMVsp2jBMLvWXHPNzv+PFgyLLbZYt/WP26OFQtfn7rkN1157bef6x2XllVcubqtvQ7RROP/889Nvf/vbYtu+//3vz/Z6AwCtIUt1J0sBAP0hS3UnSwE9DZ3uGoCZWHHFFYsQ0ayTIs8999zdfo5lRwuGMGLEiJk+NgLSeuutVwSPnqJP+kCY2fr3RWzDDjvskE455ZTpbougWXfzzTcX/0Zbirj01sICABj8ZKnuZCkAoD9kqe5kKaAnR/oB/RIzlqJf+ZlnnpneeOON6W6PXuBhlVVWKWYsdZ21FL3P4/aYWdXXIBcBK3qf92bddddNjzzySHHy4DihctdLnHy566ylt956q/PnOKlzzFyqz/aKGUtTp05NzRavwf3331/Mgur63D234W9/+1sxs6znNtQDVMysOvTQQ9O5556bNtxww7TXXnv1K8ABAIOHLNV3shQA0JMs1XeyFFSToh/QbxGsIoxssMEGxaH9EXCiZcAPfvCDzjYBW221VVpjjTXSHnvske6+++50++23py984Qtp8803L04w3BfRfuDII49MX//619Mvf/nLImREOPnpT39a3B7LXmihhYoTM8cJkx9//PHipMgHH3xw+uc//9m5nDh58he/+MUi3P3hD39Ixx57bDrwwAPTkCH/+QqMYHPbbbelJ554Ir300ktNCy6f+9znihlWcTLm+nN/97vf7XafOPF0zJD67Gc/m+64445iGydOnJj22Wef4jWOy5577lkE2rjuvPPOKwJbnKgZAMiTLNU3shQA0BtZqm9kKagmRT+g397//vcXgWmLLbZIhx9+eFp99dXTxz72sWLm01lnnVXcJ0LFhAkT0vzzz58222yzImzF4y666KJ+Pde4ceOK5zjmmGOKGUq77757Z2/y6Id+ww03pGWWWSbtsssuxe0RomIG0+jRozuXEb3XY3ZWrEc8fscdd0zHHXdc5+1HHHFEmmuuuYqZXtF+4amnnmrK6xSztq644or017/+Na2zzjrpG9/4xnTtEpZYYol00003FSFq6623LgLpV7/61aLHfIS/8ePHpyeffDKdffbZna0VzjnnnPQ///M/xUwxACA/slTfyFIAQG9kqb6RpaCa2mp9PfspQIb23nvvonXD5Zdf3upVAQDIjiwFANA4WQoYaI70AwAAAAAAgMwp+gEAAAAAAEDmtPcEAAAAAACAzDnSDwAAAAAAADKn6AcAAAAAAACZU/QDAAAAAACAzCn6AQAAAAAAQOYU/QAAAAAAACBzin4AAAAAAACQOUU/AAAAAAAAyJyiHwAAAAAAAGRO0Q8AAAAAAABS3v4vCuryLxIZKlQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1800x600 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create a visualization to compare original prototypes with clustered results\n",
    "fig, axs = plt.subplots(1, 3, figsize=(18, 6))\n",
    "\n",
    "# Original prototypes\n",
    "axs[0].imshow(prototypes_reordered, cmap='binary', aspect='auto')\n",
    "axs[0].set_title('Hierarchical Clustering')\n",
    "axs[0].set_xlabel('Concept Index')\n",
    "axs[0].set_ylabel('Prototype Index')\n",
    "\n",
    "# Spectral co-clustering result\n",
    "axs[1].imshow(spectral_prototypes, cmap='binary', aspect='auto')\n",
    "axs[1].set_title('Spectral Co-Clustering')\n",
    "axs[1].set_xlabel('Concept Index')\n",
    "axs[1].set_ylabel('Prototype Index')\n",
    "\n",
    "# Genetic algorithm result\n",
    "axs[2].imshow(X_reordered, cmap='binary', aspect='auto')\n",
    "axs[2].set_title('NMF Clustered Data')\n",
    "axs[2].set_xlabel('Concept Index')\n",
    "axs[2].set_ylabel('Prototype Index')\n",
    "\n",
    "plt.tight_layout()\n",
    "# plot_dir = os.path.join(PROJECT_ROOT, 'output', 'plots', 'comparison')\n",
    "# os.makedirs(plot_dir, exist_ok=True)\n",
    "# plt.savefig(os.path.join(plot_dir, f'{use_dataset}_clustering_comparison.png'), dpi=600, bbox_inches='tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fc729e6b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bdfd18b0",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "3.11.9",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
